/* * PreHDTest.java * * Copyright 2006 (C) Aaron Divinsky <boomer70@yahoo.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * */ package pcgen.core.prereq; import junit.framework.Test; import junit.framework.TestSuite; import junit.textui.TestRunner; import pcgen.AbstractCharacterTestCase; import pcgen.cdom.base.FormulaFactory; import pcgen.cdom.content.LevelCommandFactory; import pcgen.cdom.enumeration.FormulaKey; import pcgen.cdom.enumeration.ObjectKey; import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.formula.FixedSizeFormula; import pcgen.cdom.reference.CDOMDirectSingleRef; import pcgen.core.Globals; import pcgen.core.PCClass; import pcgen.core.PlayerCharacter; import pcgen.core.Race; import pcgen.core.SizeAdjustment; import pcgen.persistence.lst.prereq.PreParserFactory; /** * <code>PreHDTest</code> tests that the PREHD tag is * working correctly. * * * @author Aaron Divinsky <boomer70@yahoo.com> */ @SuppressWarnings("nls") public class PreHDTest extends AbstractCharacterTestCase { Race race = new Race(); Race race1 = new Race(); PCClass monClass = new PCClass(); /** * Main method. Runs the test. * @param args */ public static void main(final String[] args) { TestRunner.run(PreHDTest.class); } /** * @return Test */ public static Test suite() { return new TestSuite(PreHDTest.class); } /** * Test the PREHD code * @throws Exception */ public void testHD() throws Exception { race.setName("Human"); CDOMDirectSingleRef<SizeAdjustment> mediumRef = CDOMDirectSingleRef.getRef(medium); race.put(FormulaKey.SIZE, new FixedSizeFormula(mediumRef)); Globals.getContext().getReferenceContext().importObject(race); PCClass raceClass = new PCClass(); raceClass.setName("Race Class"); raceClass.put(StringKey.KEY_NAME, "RaceClass"); raceClass.put(ObjectKey.IS_MONSTER, true); Globals.getContext().getReferenceContext().importObject(raceClass); race.put(ObjectKey.MONSTER_CLASS, new LevelCommandFactory( CDOMDirectSingleRef.getRef(raceClass), FormulaFactory .getFormulaFor(3))); final PlayerCharacter character = getCharacter(); character.setRace(race); Prerequisite prereq; final PreParserFactory factory = PreParserFactory.getInstance(); prereq = factory.parse("PREHD:MIN=4"); assertFalse("Character doesn't have 4 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=3"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=1,MAX=3"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=3,MAX=6"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=4,MAX=7"); assertFalse("Character doesn't have 4 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=1,MAX=2"); assertFalse("Character doesn't have 2 or less HD", PrereqHandler .passes(prereq, character, null)); } /** * Tests using monster class levels * @throws Exception */ public void testClassLevels() throws Exception { monClass.setName("Humanoid"); monClass.put(ObjectKey.IS_MONSTER, true); Globals.getContext().getReferenceContext().importObject(monClass); race1.setName("Bugbear"); CDOMDirectSingleRef<SizeAdjustment> largeRef = CDOMDirectSingleRef.getRef(large); race1.put(FormulaKey.SIZE, new FixedSizeFormula(largeRef)); race1.put(ObjectKey.MONSTER_CLASS, new LevelCommandFactory( CDOMDirectSingleRef.getRef(monClass), FormulaFactory .getFormulaFor(3))); Globals.getContext().getReferenceContext().importObject(race1); final PlayerCharacter character = new PlayerCharacter(); character.setRace(race1); Prerequisite prereq; final PreParserFactory factory = PreParserFactory.getInstance(); prereq = factory.parse("PREHD:MIN=4"); assertFalse("Character doesn't have 4 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=3"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=1,MAX=3"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=3,MAX=6"); assertTrue("Character has 3 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=4,MAX=7"); assertFalse("Character doesn't have 4 HD", PrereqHandler.passes(prereq, character, null)); prereq = factory.parse("PREHD:MIN=1,MAX=2"); assertFalse("Character doesn't have 2 or less HD", PrereqHandler .passes(prereq, character, null)); } }