combatlevel plugin: fix prayer levels until combat level calculation

Add more prayer level tests to expose a bug in which
needed prayer levels for next combat level was 0 instead of 2 in some
corner cases and implemented fixes.

For example: Let prayer level p be an odd number. The current combat level
is exactly same for p and p - 1. Therefore given n is the needed prayer
levels for a combat level with p - 1 prayer then n - 1 is the needed
prayer levels for a combal level with p prayer.

Further more the usage of Math.floor was incorrect in every cases so it is
changed to Math.ceil.
This commit is contained in:
Ville Kopio
2019-05-14 04:25:47 +03:00
committed by Adam
parent 984f265bb1
commit 4e8e182214
2 changed files with 47 additions and 4 deletions

View File

@@ -270,10 +270,47 @@ public class CombatLevelPluginTest
when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(99);
when(client.getRealSkillLevel(Skill.HITPOINTS)).thenReturn(99);
assertEquals(1, neededPrayerLevels());
}
@Test
public void testEvenPrayerLevelsNeededWhenNearNextCombatLevel()
{
when(player.getCombatLevel()).thenReturn(90);
when(client.getRealSkillLevel(Skill.ATTACK)).thenReturn(74);
when(client.getRealSkillLevel(Skill.STRENGTH)).thenReturn(75);
when(client.getRealSkillLevel(Skill.DEFENCE)).thenReturn(72);
when(client.getRealSkillLevel(Skill.PRAYER)).thenReturn(52);
when(client.getRealSkillLevel(Skill.RANGED)).thenReturn(44);
when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(60);
when(client.getRealSkillLevel(Skill.HITPOINTS)).thenReturn(72);
assertEquals(2, neededPrayerLevels());
}
@Test
public void testOddPrayerLevelsNeededWhenNearNextCombatLevel()
{
when(player.getCombatLevel()).thenReturn(90);
when(client.getRealSkillLevel(Skill.ATTACK)).thenReturn(74);
when(client.getRealSkillLevel(Skill.STRENGTH)).thenReturn(75);
when(client.getRealSkillLevel(Skill.DEFENCE)).thenReturn(72);
when(client.getRealSkillLevel(Skill.PRAYER)).thenReturn(53);
when(client.getRealSkillLevel(Skill.RANGED)).thenReturn(44);
when(client.getRealSkillLevel(Skill.MAGIC)).thenReturn(60);
when(client.getRealSkillLevel(Skill.HITPOINTS)).thenReturn(72);
assertEquals(1, neededPrayerLevels());
}
private int neededPrayerLevels()
{
HashMap<String, Double> baseValues = getBaseValues();
// test prayer
assertEquals(1, calcLevelsPray(baseValues.get("base") + baseValues.get("max"),
player.getCombatLevel() + 1, client.getRealSkillLevel(Skill.PRAYER)));
return calcLevelsPray(
baseValues.get("base") + baseValues.get("max"),
player.getCombatLevel() + 1,
client.getRealSkillLevel(Skill.PRAYER)
);
}
}