package com.lateensoft.pathfinder.toolkit.model.stats;
import com.google.common.collect.Lists;
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 com.lateensoft.pathfinder.toolkit.model.character.stats.ValidatedTypedStatSet;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.util.List;
import static org.junit.Assert.assertEquals;
@RunWith(JUnit4.class)
public class AbilitySetTest {
List<Ability> defaultAbilities;
@Before
public void setUp() throws Exception {
defaultAbilities = Lists.newArrayList();
AbilitySet abilitySet = new AbilitySet();
for (int i = 0; i < abilitySet.size(); i++) {
defaultAbilities.add(abilitySet.getAbilityAtIndex(i));
}
}
@Test
public void newValidatedAbilitySetWithCorrections() {
defaultAbilities.add(new Ability(AbilityType.STR));
defaultAbilities.remove(1);
TestCorrectionListener listener = new TestCorrectionListener();
AbilitySet newAbilitySet = new AbilitySet(defaultAbilities, listener);
assertEquals(1, listener.removes);
assertEquals(1, listener.adds);
assertEquals(6, newAbilitySet.size());
}
@Test
public void newValidatedAbilitySetCorrect() {
TestCorrectionListener listener = new TestCorrectionListener();
AbilitySet newAbilitySet = new AbilitySet(defaultAbilities, listener);
assertEquals(0, listener.removes);
assertEquals(0, listener.adds);
assertEquals(6, newAbilitySet.size());
}
private class TestCorrectionListener implements ValidatedTypedStatSet.CorrectionListener<Ability> {
public int removes = 0;
public int adds = 0;
@Override
public void onInvalidItemRemoved(Ability removedAbility) {
removes++;
}
@Override
public void onMissingItemAdded(Ability addedAbility) {
adds++;
}
}
}