package com.lateensoft.pathfinder.toolkit.model.stats;
import com.lateensoft.pathfinder.toolkit.model.character.stats.Ability;
import com.lateensoft.pathfinder.toolkit.model.character.stats.AbilitySet;
import com.lateensoft.pathfinder.toolkit.model.character.stats.AbilityType;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.junit.Assert.assertEquals;
@RunWith(JUnit4.class)
public class AbilityTest {
private Ability abilityScore;
private static final int DEFAULT_SCORE = 10;
private static final int[] SCORES = {7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
private static final int[] COSTS = {-4, -2, -1, 0, 1, 2, 3, 5, 7, 10, 13, 17};
@Before
public void setUp() throws Exception {
abilityScore = new Ability(AbilityType.STR, DEFAULT_SCORE, 0);
}
@Test
public void testGetAbilityPointCost() {
for(int i = 0; i < SCORES.length; i++) {
abilityScore.setScore(SCORES[i]);
assertEquals(COSTS[i], abilityScore.getAbilityPointCost());
}
}
@Test
public void calculateModifierZero() {
abilityScore.setScore(10);
abilityScore.setTempBonus(0);
assertEquals(0, abilityScore.getAbilityModifier());
}
@Test
public void calculateTempModifierZero() {
abilityScore.setScore(10);
abilityScore.setTempBonus(0);
assertEquals(0, abilityScore.getTempModifier());
}
@Test
public void calculateModifierPositive() {
abilityScore.setScore(18);
abilityScore.setTempBonus(3);
assertEquals(4, abilityScore.getAbilityModifier());
}
@Test
public void calculateTempModifierPositive() {
abilityScore.setScore(18);
abilityScore.setTempBonus(3);
assertEquals(5, abilityScore.getTempModifier());
}
@Test
public void calculateModifierNegative() {
abilityScore.setScore(7);
abilityScore.setTempBonus(-1);
assertEquals(-2, abilityScore.getAbilityModifier());
}
@Test
public void calculateTempModifierNegative() {
abilityScore.setScore(7);
abilityScore.setTempBonus(-1);
assertEquals(-2, abilityScore.getTempModifier());
}
}