mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-07-28 01:55:28 +02:00
RandomChanceUtil refactor part 1
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
////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
|
||||
//@RunWith(PowerMockRunner.class)
|
||||
//@PrepareForTest({RandomChanceUtil.class, UserManager.class})
|
||||
//@PrepareForTest({RandomChanceUtil.class, UserManager.class, PrimarySkillType.class})
|
||||
//public class RandomChanceTest {
|
||||
//
|
||||
// private Player luckyPlayer;
|
||||
@@ -37,12 +37,12 @@
|
||||
//
|
||||
// @Before
|
||||
// public void setUpMock() {
|
||||
// primarySkillType = PrimarySkillType.HERBALISM;
|
||||
// subSkillType = SubSkillType.HERBALISM_GREEN_THUMB;
|
||||
// primarySkillType = PrimarySkillType.MINING;
|
||||
// subSkillType = SubSkillType.MINING_MOTHER_LODE;
|
||||
//
|
||||
// //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, "getMaxBonusLevelCap", subSkillType.getClass())).toReturn(1000D);
|
||||
// PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaximumProbability", subSkillType.getClass())).toReturn(10.0D);
|
||||
// PowerMockito.stub(PowerMockito.method(RandomChanceUtil.class, "getMaxBonusLevelCap", subSkillType.getClass())).toReturn(10000D);
|
||||
//
|
||||
// normalPlayer = mock(Player.class);
|
||||
// luckyPlayer = mock(Player.class);
|
||||
@@ -62,39 +62,39 @@
|
||||
// Mockito.when(Permissions.lucky(luckyPlayer, primarySkillType)).thenReturn(true);
|
||||
// Mockito.when(Permissions.lucky(normalPlayer, primarySkillType)).thenReturn(false);
|
||||
//
|
||||
// Mockito.when(mmoPlayerNormal.getSkillLevel(primarySkillType)).thenReturn(800);
|
||||
// Mockito.when(mmoPlayerLucky.getSkillLevel(primarySkillType)).thenReturn(800);
|
||||
// Mockito.when(mmoPlayerNormal.getSkillLevel(primarySkillType)).thenReturn(2150);
|
||||
// Mockito.when(mmoPlayerLucky.getSkillLevel(primarySkillType)).thenReturn(2150);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void testLuckyChance() {
|
||||
// System.out.println(testASCIIHeader);
|
||||
// System.out.println("Testing success odds to fall within expected values...");
|
||||
// assertEquals(80D, getSuccessChance(mmoPlayerNormal),0D);
|
||||
// assertEquals(80D * RandomChanceUtil.LUCKY_MODIFIER, getSuccessChance(mmoPlayerLucky),0D);
|
||||
// assertEquals(2.15D, getSuccessChance(mmoPlayerNormal),0.00D);
|
||||
// assertEquals(2.15D * RandomChanceUtil.LUCKY_MODIFIER, getSuccessChance(mmoPlayerLucky),0.00D);
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// public void testNeverFailsSuccessLuckyPlayer() {
|
||||
// System.out.println(testASCIIHeader);
|
||||
// System.out.println("Test - Lucky Player with 80% base success should never fail (10,000 iterations)");
|
||||
// for(int x = 0; x < 10000; x++) {
|
||||
// Assert.assertTrue(RandomChanceUtil.checkRandomChanceExecutionSuccess(luckyPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true));
|
||||
// if(x == 10000-1)
|
||||
// System.out.println("They never failed!");
|
||||
// }
|
||||
// }
|
||||
//// @Test
|
||||
//// public void testNeverFailsSuccessLuckyPlayer() {
|
||||
//// System.out.println(testASCIIHeader);
|
||||
//// System.out.println("Test - Lucky Player with 80% base success should never fail (10,000 iterations)");
|
||||
//// for(int x = 0; x < 10000; x++) {
|
||||
//// Assert.assertTrue(RandomChanceUtil.checkRandomChanceExecutionSuccess(luckyPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true));
|
||||
//// if(x == 10000-1)
|
||||
//// System.out.println("They never failed!");
|
||||
//// }
|
||||
//// }
|
||||
//
|
||||
// @Test
|
||||
// public void testFailsAboutExpected() {
|
||||
// System.out.println(testASCIIHeader);
|
||||
// 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 expectedFailRate = 20D;
|
||||
// double expectedFailRate = 100.0D - 2.15D;
|
||||
//
|
||||
// double win = 0, loss = 0;
|
||||
// for(int x = 0; x < 100000; x++) {
|
||||
// if(RandomChanceUtil.checkRandomChanceExecutionSuccess(normalPlayer, SubSkillType.HERBALISM_GREEN_THUMB, true)) {
|
||||
// if(RandomChanceUtil.checkRandomChanceExecutionSuccess(normalPlayer, SubSkillType.MINING_MOTHER_LODE, true)) {
|
||||
// win++;
|
||||
// } else {
|
||||
// loss++;
|
||||
@@ -102,7 +102,7 @@
|
||||
// }
|
||||
//
|
||||
// double lossRatio = (loss / ratioDivisor);
|
||||
// Assert.assertEquals(lossRatio, expectedFailRate, 1D);
|
||||
// Assert.assertEquals(lossRatio, expectedFailRate, 0.01D);
|
||||
// }
|
||||
//
|
||||
// private double getSuccessChance(@NotNull McMMOPlayer mmoPlayer) {
|
||||
|
Reference in New Issue
Block a user