package pcgen.core;
import pcgen.AbstractCharacterTestCase;
import pcgen.cdom.enumeration.StringKey;
import pcgen.core.prereq.PrereqHandler;
import pcgen.core.prereq.Prerequisite;
import pcgen.persistence.PersistenceLayerException;
import pcgen.persistence.lst.prereq.PreParserFactory;
/**
* <code>PrereqHandlerTest</code> tests the operation of the
* PrereqHandler class.
*
*
* @author James Dempsey <jdempsey@users.sourceforge.net>
*/
@SuppressWarnings("nls")
public class PrereqHandlerTest extends AbstractCharacterTestCase
{
/**
* Default constructor
* @param name
*/
public PrereqHandlerTest(final String name)
{
super(name);
}
/**
* Test the passes method. Currently this concentrates on making sure
* the invert result is working.
* @throws PersistenceLayerException
*/
public void testPasses() throws PersistenceLayerException
{
final PreParserFactory factory = PreParserFactory.getInstance();
final Prerequisite prereqNeg = factory.parse("!PREALIGN:LG,LN,LE");
final Prerequisite prereq = factory.parse("PREALIGN:NG,TN,NE,CG,CN,CE");
final PlayerCharacter pc = getCharacter();
final Race human = new Race();
human.setName("Human");
pc.setRace(human);
pc.setAlignment(le);
assertEquals("Non-negate returns false", false, PrereqHandler.passes(
prereq, pc, null));
assertEquals("Negate returns false", false, PrereqHandler.passes(
prereqNeg, pc, null));
pc.setAlignment(tn);
assertEquals("Non-negate returns true", true, PrereqHandler.passes(
prereq, pc, null));
assertEquals("Negate returns true", true, PrereqHandler.passes(
prereqNeg, pc, null));
}
/**
* Tests PREFEAT
* @throws PersistenceLayerException
*/
public void testFeatPasses() throws PersistenceLayerException
{
final PreParserFactory factory = PreParserFactory.getInstance();
final Prerequisite prereq = factory.parse("!PREFEAT:1,Uncanny Dodge");
final PlayerCharacter pc = getCharacter();
final Race human = new Race();
human.setName("Human");
pc.setRace(human);
assertTrue("No feat should return true", PrereqHandler.passes(prereq,
pc, null));
final Ability ud = new Ability();
ud.setName("Uncanny Dodge");
ud.setCDOMCategory(AbilityCategory.FEAT);
ud.put(StringKey.KEY_NAME, "Uncanny Dodge");
addAbility(AbilityCategory.FEAT, ud);
assertFalse("Feat should return false", PrereqHandler.passes(prereq,
pc, null));
}
}