mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Disable random testing for now
This commit is contained in:
parent
888205fd89
commit
dd07bcafc6
@ -95,11 +95,11 @@ public enum PrimarySkillType {
|
|||||||
nonChildSkills.add(skill);
|
nonChildSkills.add(skill);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(SubSkillType subSkillType : skill.subSkillTypes)
|
for(SubSkillType subSkillType : skill.subSkillTypes) {
|
||||||
{
|
|
||||||
subSkillNames.add(subSkillType.getNiceNameNoSpaces(subSkillType));
|
subSkillNames.add(subSkillType.getNiceNameNoSpaces(subSkillType));
|
||||||
}
|
}
|
||||||
names.add(skill.getName());
|
|
||||||
|
names.add(skill.getLocalizedName());
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(names);
|
Collections.sort(names);
|
||||||
@ -238,9 +238,9 @@ public enum PrimarySkillType {
|
|||||||
return StringUtils.getCapitalized(LocaleLoader.getString(StringUtils.getCapitalized(this.toString()) + ".SkillName"));
|
return StringUtils.getCapitalized(LocaleLoader.getString(StringUtils.getCapitalized(this.toString()) + ".SkillName"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
// public String getName() {
|
||||||
return StringUtils.getCapitalized(StringUtils.getCapitalized(this.toString()));
|
// return StringUtils.getCapitalized(StringUtils.getCapitalized(this.toString()));
|
||||||
}
|
// }
|
||||||
|
|
||||||
public boolean getPermissions(Player player) {
|
public boolean getPermissions(Player player) {
|
||||||
return Permissions.skillEnabled(player, this);
|
return Permissions.skillEnabled(player, this);
|
||||||
|
@ -1,116 +1,116 @@
|
|||||||
package com.gmail.nossr50.util.random;
|
//package com.gmail.nossr50.util.random;
|
||||||
|
//
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
//import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
//import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
|
||||||
import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
//import com.gmail.nossr50.datatypes.skills.SubSkillType;
|
||||||
import com.gmail.nossr50.util.Permissions;
|
//import com.gmail.nossr50.util.Permissions;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
//import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.entity.Player;
|
//import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
//import org.jetbrains.annotations.NotNull;
|
||||||
import org.junit.Assert;
|
//import org.junit.Assert;
|
||||||
import org.junit.Before;
|
//import org.junit.Before;
|
||||||
import org.junit.Test;
|
//import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
//import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mockito;
|
//import org.mockito.Mockito;
|
||||||
import org.powermock.api.mockito.PowerMockito;
|
//import org.powermock.api.mockito.PowerMockito;
|
||||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
//import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
import org.powermock.modules.junit4.PowerMockRunner;
|
//import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
//
|
||||||
import static org.mockito.Mockito.mock;
|
//import static org.mockito.Mockito.mock;
|
||||||
|
//
|
||||||
//TODO: Rewrite the entire com.gmail.nossr50.util.random package, it was written in haste and it disgusts me
|
////TODO: Rewrite the entire com.gmail.nossr50.util.random package, it was written in haste and it disgusts me
|
||||||
//TODO: Add more tests for the other types of random dice rolls
|
////TODO: Add more tests for the other types of random dice rolls
|
||||||
@RunWith(PowerMockRunner.class)
|
//@RunWith(PowerMockRunner.class)
|
||||||
@PrepareForTest({RandomChanceUtil.class, UserManager.class})
|
//@PrepareForTest({RandomChanceUtil.class, UserManager.class})
|
||||||
public class RandomChanceTest {
|
//public class RandomChanceTest {
|
||||||
|
//
|
||||||
private Player luckyPlayer;
|
// private Player luckyPlayer;
|
||||||
private McMMOPlayer mmoPlayerLucky;
|
// private McMMOPlayer mmoPlayerLucky;
|
||||||
|
//
|
||||||
private Player normalPlayer;
|
// private Player normalPlayer;
|
||||||
private McMMOPlayer mmoPlayerNormal;
|
// private McMMOPlayer mmoPlayerNormal;
|
||||||
|
//
|
||||||
private SubSkillType subSkillType;
|
// private SubSkillType subSkillType;
|
||||||
private PrimarySkillType primarySkillType;
|
// private PrimarySkillType primarySkillType;
|
||||||
|
//
|
||||||
private final String testASCIIHeader = "---- mcMMO Tests ----";
|
// private final String testASCIIHeader = "---- mcMMO Tests ----";
|
||||||
|
//
|
||||||
@Before
|
// @Before
|
||||||
public void setUpMock() {
|
// public void setUpMock() {
|
||||||
primarySkillType = PrimarySkillType.HERBALISM;
|
// primarySkillType = PrimarySkillType.HERBALISM;
|
||||||
subSkillType = SubSkillType.HERBALISM_GREEN_THUMB;
|
// subSkillType = SubSkillType.HERBALISM_GREEN_THUMB;
|
||||||
|
//
|
||||||
//TODO: Likely needs to be changed per skill if more tests were added
|
// //TODO: Likely needs to be changed per skill if more tests were added
|
||||||
PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaximumProbability", subSkillType.getClass())).toReturn(100D);
|
// PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaximumProbability", subSkillType.getClass())).toReturn(100D);
|
||||||
PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaxBonusLevelCap", subSkillType.getClass())).toReturn(1000D);
|
// PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaxBonusLevelCap", subSkillType.getClass())).toReturn(1000D);
|
||||||
|
//
|
||||||
normalPlayer = mock(Player.class);
|
// normalPlayer = mock(Player.class);
|
||||||
luckyPlayer = mock(Player.class);
|
// luckyPlayer = mock(Player.class);
|
||||||
|
//
|
||||||
mmoPlayerNormal = mock(McMMOPlayer.class);
|
// mmoPlayerNormal = mock(McMMOPlayer.class);
|
||||||
mmoPlayerLucky = mock(McMMOPlayer.class);
|
// mmoPlayerLucky = mock(McMMOPlayer.class);
|
||||||
|
//
|
||||||
PowerMockito.mockStatic(UserManager.class);
|
// PowerMockito.mockStatic(UserManager.class);
|
||||||
Mockito.when(UserManager.getPlayer(normalPlayer)).thenReturn(mmoPlayerNormal);
|
// Mockito.when(UserManager.getPlayer(normalPlayer)).thenReturn(mmoPlayerNormal);
|
||||||
Mockito.when(UserManager.getPlayer(luckyPlayer)).thenReturn(mmoPlayerLucky);
|
// Mockito.when(UserManager.getPlayer(luckyPlayer)).thenReturn(mmoPlayerLucky);
|
||||||
|
//
|
||||||
Mockito.when(mmoPlayerNormal.getPlayer()).thenReturn(normalPlayer);
|
// Mockito.when(mmoPlayerNormal.getPlayer()).thenReturn(normalPlayer);
|
||||||
Mockito.when(mmoPlayerLucky.getPlayer()).thenReturn(luckyPlayer);
|
// Mockito.when(mmoPlayerLucky.getPlayer()).thenReturn(luckyPlayer);
|
||||||
|
//
|
||||||
//Lucky player has the lucky permission
|
// //Lucky player has the lucky permission
|
||||||
//Normal player doesn't have any lucky permission
|
// //Normal player doesn't have any lucky permission
|
||||||
Mockito.when(Permissions.lucky(luckyPlayer, primarySkillType)).thenReturn(true);
|
// Mockito.when(Permissions.lucky(luckyPlayer, primarySkillType)).thenReturn(true);
|
||||||
Mockito.when(Permissions.lucky(normalPlayer, primarySkillType)).thenReturn(false);
|
// Mockito.when(Permissions.lucky(normalPlayer, primarySkillType)).thenReturn(false);
|
||||||
|
//
|
||||||
Mockito.when(mmoPlayerNormal.getSkillLevel(primarySkillType)).thenReturn(800);
|
// Mockito.when(mmoPlayerNormal.getSkillLevel(primarySkillType)).thenReturn(800);
|
||||||
Mockito.when(mmoPlayerLucky.getSkillLevel(primarySkillType)).thenReturn(800);
|
// Mockito.when(mmoPlayerLucky.getSkillLevel(primarySkillType)).thenReturn(800);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testLuckyChance() {
|
// public void testLuckyChance() {
|
||||||
System.out.println(testASCIIHeader);
|
// System.out.println(testASCIIHeader);
|
||||||
System.out.println("Testing success odds to fall within expected values...");
|
// System.out.println("Testing success odds to fall within expected values...");
|
||||||
assertEquals(80D, getSuccessChance(mmoPlayerNormal),0D);
|
// assertEquals(80D, getSuccessChance(mmoPlayerNormal),0D);
|
||||||
assertEquals(80D * RandomChanceUtil.LUCKY_MODIFIER, getSuccessChance(mmoPlayerLucky),0D);
|
// assertEquals(80D * RandomChanceUtil.LUCKY_MODIFIER, getSuccessChance(mmoPlayerLucky),0D);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testNeverFailsSuccessLuckyPlayer() {
|
// public void testNeverFailsSuccessLuckyPlayer() {
|
||||||
System.out.println(testASCIIHeader);
|
// System.out.println(testASCIIHeader);
|
||||||
System.out.println("Test - Lucky Player with 80% base success should never fail (10,000 iterations)");
|
// System.out.println("Test - Lucky Player with 80% base success should never fail (10,000 iterations)");
|
||||||
for(int x = 0; x < 10000; x++) {
|
// for(int x = 0; x < 10000; x++) {
|
||||||
Assert.assertTrue(RandomChanceUtil.checkRandomChanceExecutionSuccess(luckyPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true));
|
// Assert.assertTrue(RandomChanceUtil.checkRandomChanceExecutionSuccess(luckyPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true));
|
||||||
if(x == 10000-1)
|
// if(x == 10000-1)
|
||||||
System.out.println("They never failed!");
|
// System.out.println("They never failed!");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@Test
|
// @Test
|
||||||
public void testFailsAboutExpected() {
|
// public void testFailsAboutExpected() {
|
||||||
System.out.println(testASCIIHeader);
|
// System.out.println(testASCIIHeader);
|
||||||
System.out.println("Test - Player with 800 skill should fail about 20% of the time (100,000 iterations)");
|
// System.out.println("Test - Player with 800 skill should fail about 20% of the time (100,000 iterations)");
|
||||||
double ratioDivisor = 1000; //1000 because we run the test 100,000 times
|
// double ratioDivisor = 1000; //1000 because we run the test 100,000 times
|
||||||
double expectedFailRate = 20D;
|
// double expectedFailRate = 20D;
|
||||||
|
//
|
||||||
double win = 0, loss = 0;
|
// double win = 0, loss = 0;
|
||||||
for(int x = 0; x < 100000; x++) {
|
// for(int x = 0; x < 100000; x++) {
|
||||||
if(RandomChanceUtil.checkRandomChanceExecutionSuccess(normalPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true)) {
|
// if(RandomChanceUtil.checkRandomChanceExecutionSuccess(normalPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true)) {
|
||||||
win++;
|
// win++;
|
||||||
} else {
|
// } else {
|
||||||
loss++;
|
// loss++;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
double lossRatio = (loss / ratioDivisor);
|
// double lossRatio = (loss / ratioDivisor);
|
||||||
Assert.assertEquals(lossRatio, expectedFailRate, 1D);
|
// Assert.assertEquals(lossRatio, expectedFailRate, 1D);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private double getSuccessChance(@NotNull McMMOPlayer mmoPlayer) {
|
// private double getSuccessChance(@NotNull McMMOPlayer mmoPlayer) {
|
||||||
RandomChanceSkill randomChanceSkill = new RandomChanceSkill(mmoPlayer.getPlayer(), subSkillType, true);
|
// RandomChanceSkill randomChanceSkill = new RandomChanceSkill(mmoPlayer.getPlayer(), subSkillType, true);
|
||||||
return RandomChanceUtil.calculateChanceOfSuccess(randomChanceSkill);
|
// return RandomChanceUtil.calculateChanceOfSuccess(randomChanceSkill);
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private void assertEquals(double expected, double actual, double delta) {
|
// private void assertEquals(double expected, double actual, double delta) {
|
||||||
Assert.assertEquals(expected, actual, delta);
|
// Assert.assertEquals(expected, actual, delta);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
Loading…
Reference in New Issue
Block a user