From: <boo...@us...> - 2006-04-18 03:23:29
|
Revision: 835 Author: boomer70 Date: 2006-04-17 20:23:09 -0700 (Mon, 17 Apr 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=835&view=rev Log Message: ----------- Add a bunch more PRExxx test cases. Fixed some bugs found by the test cases. Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/DamageReduction.java Trunk/pcgen/code/src/java/pcgen/core/PObject.java Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreDeityParser.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreDamageReductionTester.java Trunk/pcgen/code/src/java/plugin/pretokens/test/PreHasDeityTester.java Added Paths: ----------- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCSkillTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDRTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityDomainTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityTest.java Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDomainTest.java Modified: Trunk/pcgen/code/src/java/pcgen/core/DamageReduction.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/DamageReduction.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/pcgen/core/DamageReduction.java 2006-04-18 03:23:09 UTC (rev 835) @@ -586,6 +586,24 @@ } /** + * Returns a list of merged DamageReduction objects "and" values are not + * merged. + * @param aPC The PC the DR rating is being calculated for. + * @param drList List of DamageReduction objects to combine + * @return List of combined DamageReduction objects without merging "ands" + */ + public static List getDRList(final PlayerCharacter aPC, List drList) + { + List inList = new ArrayList(drList); + List orList = parseOrList(aPC, inList); + List andList = parseAndList(inList); + + List resultList = processList(andList, orList); + + return resultList; + } + + /** * Returns a single String representing all DRs applicible to the passed in * PC. * @param aPC PlayerCharacter these DRs apply to. @@ -594,11 +612,7 @@ */ public static String getDRString(final PlayerCharacter aPC, List drList) { - List inList = new ArrayList(drList); - List orList = parseOrList(aPC, inList); - List andList = parseAndList(inList); - - List resultList = processList(andList, orList); + List resultList = getDRList(aPC, drList); mergeAnds(resultList); StringBuffer buffer = new StringBuffer(); Modified: Trunk/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/pcgen/core/PObject.java 2006-04-18 03:23:09 UTC (rev 835) @@ -3240,7 +3240,8 @@ } } - String DR = stringChar.getCharacteristic(StringKey.DR_FORMULA); +// String DR = stringChar.getCharacteristic(StringKey.DR_FORMULA); + final String DR = DamageReduction.getDRString(null, drList); if (!(this instanceof PCClass) && (DR != null) && (DR.length() != 0)) { txt.append("\tDR:").append(DR); @@ -4211,10 +4212,10 @@ /** * Remove the bonus from this objects list of bonuses. - * + * * @param bonusString The string representing the bonus * @param chooseString The choice that was made. - * @param aPC The player character to remove th bonus from. + * @param aPC The player character to remove th bonus from. */ public final void removeBonus(final String bonusString, final String chooseString, final PlayerCharacter aPC) { Modified: Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2006-04-18 03:23:09 UTC (rev 835) @@ -203,7 +203,7 @@ // whether to adjust the feat pool when requested private boolean allowFeatPoolAdjustment = true; - + // pool of feats remaining to distribute private double feats = 0; private int age = 0; @@ -8585,128 +8585,27 @@ } /** - * Get all possible sources of Damage Resistance and calculate - * @return DR - **/ - public String calcDR() + * Gets a list of all sources of DRs. + * @return List of DRs + */ + public List getDRList() { List drList = new ArrayList(); - drList.addAll(race.getDRList()); - - if (deity != null) + for (Iterator i = getPObjectList().iterator(); i.hasNext(); ) { - drList.addAll(deity.getDRList()); + PObject obj = (PObject)i.next(); + drList.addAll(obj.getDRList()); } + return DamageReduction.getDRList(this, drList); + } - for (Iterator i = classList.iterator(); i.hasNext();) - { - final PCClass aClass = (PCClass) i.next(); - drList.addAll(aClass.getDRList()); - } - - for (Iterator i = aggregateFeatList().iterator(); i.hasNext();) - { - final Ability aFeat = (Ability) i.next(); - drList.addAll(aFeat.getDRList()); - } - - for (Iterator i = getSkillList().iterator(); i.hasNext();) - { - final Skill aSkill = (Skill) i.next(); - drList.addAll(aSkill.getDRList()); - } - - for (Iterator i = characterDomainList.iterator(); i.hasNext();) - { - final CharacterDomain aCD = (CharacterDomain) i.next(); - - if (aCD.getDomain() != null) - { - drList.addAll(aCD.getDomain().getDRList()); - } - } - - for (Iterator e = equipmentList.iterator(); e.hasNext();) - { - final Equipment eq = (Equipment) e.next(); - - if (eq.isEquipped()) - { - drList.addAll(eq.getDRList()); - - List aList = eq.getEqModifierList(true); - - if (!aList.isEmpty()) - { - for (Iterator e2 = aList.iterator(); e2.hasNext();) - { - final EquipmentModifier eqMod = (EquipmentModifier) e2.next(); - drList.addAll(eqMod.getDRList()); - } - } - - aList = eq.getEqModifierList(false); - - if (!aList.isEmpty()) - { - for (Iterator e2 = aList.iterator(); e2.hasNext();) - { - final EquipmentModifier eqMod = (EquipmentModifier) e2.next(); - drList.addAll(eqMod.getDRList()); - } - } - } - } - -// final int atl = getTotalLevels(); -// final int thd = totalHitDice(); - - for (Iterator i = templateList.iterator(); i.hasNext();) - { - final PCTemplate aTemplate = (PCTemplate) i.next(); - drList.addAll(aTemplate.getDRList()); -// drMap = addStringToDRMap(drMap, aTemplate.getDR(atl, thd)); - } - -// final StringBuffer DR = new StringBuffer(); -// -// for (Iterator i = drMap.keySet().iterator(); i.hasNext();) -// { -// final String damageType = i.next().toString(); -// String symbol = ""; -// int protectionValue = Integer.parseInt(drMap.get(damageType).toString()); -// int damageTypeAsInteger = 0; -// -// try -// { -// damageTypeAsInteger = Integer.parseInt(damageType); -// } -// catch (NumberFormatException ignore) -// { -// //Do nothing, the damage type is some kind of special value like 'Silver' -// } -// -// if (damageTypeAsInteger > 0) -// { -// symbol = "+"; -// } -// -// // -// // For some reason '+1' is coming out simply as '1', so need to tack on the -// // '+' again -// // -// protectionValue += (int) getTotalBonusTo("DR", symbol + damageType); -// -// if (DR.length() > 0) -// { -// DR.append(';'); -// } -// -// DR.append(protectionValue).append('/').append(symbol).append(damageType); -// } -// -// return DR.toString(); - return DamageReduction.getDRString(this, drList); + /** + * Get all possible sources of Damage Resistance and calculate + * @return DR + **/ + public String calcDR() + { + return DamageReduction.getDRString(this, getDRList()); } public double calcMoveMult(final double move, final int index) @@ -12089,8 +11988,8 @@ listindex++; aList.add(ab.toString().toUpperCase()); - - // If we have processed all of the entriues, or this is not + + // If we have processed all of the entriues, or this is not // a LIST bonus, don't add any more copies. if (aTok.countTokens() > 0 || listindex >= cnt || !bonusInfo.equals("LIST")) @@ -15701,14 +15600,14 @@ /** * Whether to allow adjustment of the Global Feat pool - * - * @param allow + * + * @param allow */ public void setAllowFeatPoolAdjustment(boolean allow) { this.allowFeatPoolAdjustment = allow; } - + /* * For debugging purposes * Dumps contents of spellbooks to System.err Modified: Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreDeityParser.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreDeityParser.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/plugin/pretokens/parser/PreDeityParser.java 2006-04-18 03:23:09 UTC (rev 835) @@ -54,7 +54,7 @@ Prerequisite prereq = super.parse(kind, formula, invertResult, overrideQualify); String[] tokens = formula.split(","); - + if (tokens.length != 1) { prereq.setKind(null); // PREMULT @@ -76,18 +76,27 @@ prereq.addPrerequisite(subprereq); } subprereq.setOperator(PrerequisiteOperator.EQ); - subprereq.setOperand(token); - if (token.equalsIgnoreCase("y") || token.equalsIgnoreCase("n")) + if (token.equalsIgnoreCase("y") || token.equalsIgnoreCase("n") + || token.equalsIgnoreCase("yes") || token.equalsIgnoreCase("no")) { + if (token.toLowerCase().startsWith("y")) + { + subprereq.setOperand("Y"); + } + else + { + subprereq.setOperand("N"); + } subprereq.setKind("has.deity"); } else { + subprereq.setOperand(token); subprereq.setKind("deity"); } } - + if (invertResult) { prereq.setOperator( prereq.getOperator().invert()); } Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreDamageReductionTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreDamageReductionTester.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreDamageReductionTester.java 2006-04-18 03:23:09 UTC (rev 835) @@ -32,6 +32,9 @@ import pcgen.core.prereq.PrerequisiteTest; import java.util.StringTokenizer; +import java.util.List; +import java.util.Iterator; +import pcgen.core.DamageReduction; /** * @author wardc @@ -46,24 +49,15 @@ int runningTotal = 0; // Parse the character's DR into a lookup map - final String aDR = character.calcDR(); // Silver/10;Good/5;Magic/15 - if (aDR != null) + List drList = character.getDRList(); + final int target = Integer.parseInt(prereq.getOperand()); + for (Iterator i = drList.iterator(); i.hasNext(); ) { - final StringTokenizer characterDRTokenizer = new StringTokenizer(aDR, ";"); //$NON-NLS-1$ - - while (characterDRTokenizer.hasMoreTokens()) + DamageReduction dr = (DamageReduction)i.next(); + if (dr.getBypass().equalsIgnoreCase(prereq.getKey())) { - final StringTokenizer drTokenizer = new StringTokenizer(characterDRTokenizer.nextToken(), "/"); //$NON-NLS-1$ - final String aValue = drTokenizer.nextToken(); - final String aType = drTokenizer.nextToken(); - - if (aType.equalsIgnoreCase( prereq.getKey())) { - final int characterValue = Integer.parseInt(aValue); - final int targetValue = Integer.parseInt( prereq.getOperand() ); - - runningTotal = prereq.getOperator().compare(characterValue, targetValue); - break; - } + runningTotal = prereq.getOperator().compare(dr.getReductionValue(), target); + break; } } Modified: Trunk/pcgen/code/src/java/plugin/pretokens/test/PreHasDeityTester.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/pretokens/test/PreHasDeityTester.java 2006-04-18 01:39:30 UTC (rev 834) +++ Trunk/pcgen/code/src/java/plugin/pretokens/test/PreHasDeityTester.java 2006-04-18 03:23:09 UTC (rev 835) @@ -44,7 +44,8 @@ int runningTotal; final boolean charHasDeity = character.getDeity() != null; - final boolean flag = (("Y".equals(prereq.getOperand().toUpperCase()) && (charHasDeity)) || ("N".equals(prereq.getOperand().toUpperCase()) && (!charHasDeity))); //$NON-NLS-1$ //$NON-NLS-2$ + final String ucOp = prereq.getOperand().toUpperCase(); + final boolean flag = (("Y".equals(ucOp)) && (charHasDeity)) || (("N".equals(ucOp)) && (!charHasDeity)); //$NON-NLS-1$ //$NON-NLS-2$ if (prereq.getOperator().equals( PrerequisiteOperator.EQ )) { runningTotal = flag==true ? 1 : 0; Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCSkillTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCSkillTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCSkillTest.java 2006-04-18 03:23:09 UTC (rev 835) @@ -0,0 +1,156 @@ +/* + * PreCSkillTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * 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 pcgen.AbstractCharacterTestCase; +import pcgen.core.Globals; +import pcgen.core.PCClass; +import pcgen.core.PlayerCharacter; +import pcgen.core.Skill; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreCSkillTest</code> tests that the PRECSKILL tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date$ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision$ + */ +public class PreCSkillTest extends AbstractCharacterTestCase +{ + PCClass myClass = new PCClass(); + + public static void main(final String[] args) + { + junit.swingui.TestRunner.run(PreCSkillTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreCSkillTest.class); + } + + /** + * Test that CSkill works + * @throws Exception + */ + public void testCSkill() + throws Exception + { + final PlayerCharacter character = getCharacter(); + character.incrementClassLevel(1, myClass, true); + + myClass = character.getClassNamed("My Class"); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PRECSKILL:1,Spot,Listen"); + + assertFalse("Character has no class skills", + PrereqHandler.passes(prereq, character, null)); + + myClass.addSkillToList("Spot"); + + assertTrue("Character has spot class skills", + PrereqHandler.passes(prereq, character, null)); + + myClass.addCSkill("Spy 1"); + + assertTrue("Character has spot class skills", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PRECSKILL:2,TYPE.Spy"); + + assertFalse("Character has only one Spy Skill", + PrereqHandler.passes(prereq, character, null)); + + myClass.addCSkill("Spy 2"); + + assertTrue("Character has 2 Spy class skills", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PRECSKILL:3,Spot,TYPE.Spy"); + + assertTrue("Character has 2 Spy and Spot class skills", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PRECSKILL:3,Listen,TYPE.Spy"); + + assertFalse("Character has only 2 Spy Skills", + PrereqHandler.passes(prereq, character, null)); + + myClass.addCSkill("Spy 3"); + + prereq = factory.parse("PRECSKILL:3,Listen,TYPE.Spy"); + + assertTrue("Character has 3 Spy Skills", + PrereqHandler.passes(prereq, character, null)); + } + + protected void setUp() + throws Exception + { + super.setUp(); + + Skill spot = new Skill(); + spot.setName("Spot"); + Globals.getSkillList().add(spot); + + Skill listen = new Skill(); + listen.setName("Listen"); + Globals.getSkillList().add(listen); + + Skill spy1 = new Skill(); + spy1.setName("Spy 1"); + spy1.setTypeInfo("Spy"); + Globals.getSkillList().add(spy1); + + Skill spy2 = new Skill(); + spy2.setName("Spy 2"); + spy2.setTypeInfo("Spy"); + Globals.getSkillList().add(spy2); + + Skill spy3 = new Skill(); + spy3.setName("Spy 3"); + spy3.setTypeInfo("Spy"); + Globals.getSkillList().add(spy3); + + Skill spy4 = new Skill(); + spy4.setName("Spy 4"); + spy4.setTypeInfo("Spy"); + Globals.getSkillList().add(spy4); + + myClass.setName("My Class"); + myClass.setAbbrev("Myc"); + myClass.setSkillPointFormula("3"); + Globals.getClassList().add(myClass); + } +} Property changes on: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreCSkillTest.java ___________________________________________________________________ Name: svn:keywords + "Author Revision Date Id" Name: svn:eol-style + native Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDRTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDRTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDRTest.java 2006-04-18 03:23:09 UTC (rev 835) @@ -0,0 +1,159 @@ +/* + * PreDRTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * 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 pcgen.AbstractCharacterTestCase; +import pcgen.core.DamageReduction; +import pcgen.core.PlayerCharacter; +import pcgen.core.Race; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreDRTest</code> tests that the PREDR tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date$ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision$ + */ +public class PreDRTest extends AbstractCharacterTestCase +{ + private Race race = new Race(); + private DamageReduction drPlus1; + + public static void main(final String[] args) + { + junit.swingui.TestRunner.run(PreDRTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreDRTest.class); + } + + /** + * Test basic functionality + * @throws Exception + */ + public void testDR() + throws Exception + { + final PlayerCharacter character = getCharacter(); + character.setRace(race); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDR:1,+1=10"); + + assertFalse("Character has no DR", + PrereqHandler.passes(prereq, character, null)); + + race.addDR(drPlus1); + + assertFalse("Character DR not 10", + PrereqHandler.passes(prereq, character, null)); + + DamageReduction drPlus1_10 = new DamageReduction("10", "+1"); + race.addDR(drPlus1_10); + + assertTrue("Character has DR 10/+1", + PrereqHandler.passes(prereq, character, null)); + } + + /** + * Make sure or case works + * @throws Exception + */ + public void testMultiOr() + throws Exception + { + final PlayerCharacter character = getCharacter(); + character.setRace(race); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDR:1,+1=10,+2=5"); + + assertFalse("Character has no DR", + PrereqHandler.passes(prereq, character, null)); + + race.addDR(drPlus1); + + assertFalse("Character DR not 10", + PrereqHandler.passes(prereq, character, null)); + + DamageReduction drPlus2_5 = new DamageReduction("5", "+2"); + race.addDR(drPlus2_5); + + assertTrue("Character has DR 5/+2", + PrereqHandler.passes(prereq, character, null)); + } + + public void testMultiAnd() + throws Exception + { + final PlayerCharacter character = getCharacter(); + character.setRace(race); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDR:2,+1=10,+2=5"); + + assertFalse("Character has no DR", + PrereqHandler.passes(prereq, character, null)); + + race.addDR(drPlus1); + + assertFalse("Character DR not 10", + PrereqHandler.passes(prereq, character, null)); + + DamageReduction drPlus2_5 = new DamageReduction("5", "+2"); + race.addDR(drPlus2_5); + + assertFalse("Character has DR 5/+2", + PrereqHandler.passes(prereq, character, null)); + + DamageReduction drPlus1_10 = new DamageReduction("10", "+1"); + race.addDR(drPlus1_10); + + assertTrue("Character has DR 10/+1 and 5/+2", + PrereqHandler.passes(prereq, character, null)); + } + + protected void setUp() + throws Exception + { + super.setUp(); + + drPlus1 = new DamageReduction("5", "+1"); + } +} Property changes on: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDRTest.java ___________________________________________________________________ Name: svn:keywords + "Author Revision Date Id" Name: svn:eol-style + native Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityDomainTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityDomainTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityDomainTest.java 2006-04-18 03:23:09 UTC (rev 835) @@ -0,0 +1,140 @@ +/* + * PreDeityDomainTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * 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 pcgen.AbstractCharacterTestCase; +import pcgen.core.Deity; +import pcgen.core.Domain; +import pcgen.core.Globals; +import pcgen.core.PlayerCharacter; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreDeityDomainTest</code> tests that the PREDEITYDOMAIN tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date$ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision$ + */ +public class PreDeityDomainTest extends AbstractCharacterTestCase +{ + private Deity deity; + + public static void main(final String[] args) + { + junit.swingui.TestRunner.run(PreDeityDomainTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreDeityDomainTest.class); + } + + /** + * Test for a single domain + * @throws Exception + */ + public void testSingle() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDEITYDOMAIN:1,Good"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertTrue("Character's deity has Good domain", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITYDOMAIN:1,Law"); + + assertFalse("Character's deity doesn't have Law domain", + PrereqHandler.passes(prereq, character, null)); + + } + + public void testMultiple() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDEITYDOMAIN:1,Good,Law"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertTrue("Character's deity has Good domain", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITYDOMAIN:2,Good,Law"); + + assertFalse("Character's deity doesn't have Law domain", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITYDOMAIN:2,Good,Animal"); + + assertTrue("Character's deity has Good and animal domains", + PrereqHandler.passes(prereq, character, null)); + } + + protected void setUp() + throws Exception + { + super.setUp(); + + Domain goodDomain = new Domain(); + goodDomain.setName("Good"); + Globals.addDomain(goodDomain); + + Domain animalDomain = new Domain(); + animalDomain.setName("Animal"); + Globals.addDomain(animalDomain); + + deity = new Deity(); + deity.setName("Test Deity"); + deity.setAlignment("NG"); + deity.setFollowerAlignments("012345678"); + deity.addDomain("Good"); + deity.addDomain("Animal"); + } +} Property changes on: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityDomainTest.java ___________________________________________________________________ Name: svn:keywords + "Author Revision Date Id" Name: svn:eol-style + native Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityTest.java 2006-04-18 03:23:09 UTC (rev 835) @@ -0,0 +1,176 @@ +/* + * PreDeityTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * 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 pcgen.AbstractCharacterTestCase; +import pcgen.core.Deity; +import pcgen.core.PlayerCharacter; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreDeityTest</code> tests that the PREDEITY tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date$ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision$ + */ +public class PreDeityTest extends AbstractCharacterTestCase +{ + private Deity deity; + + public static void main(final String[] args) + { + junit.swingui.TestRunner.run(PreDeityTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreDeityTest.class); + } + + /** + * Test that the boolean version (Y/N) works + * @throws Exception + */ + public void testBoolean() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDEITY:Y"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:N"); + + assertTrue("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertFalse("Character has deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:Y"); + + assertTrue("Character has deity selected", + PrereqHandler.passes(prereq, character, null)); + + } + + /** + * Test different formats for the option + * @throws Exception + */ + public void testFormat() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDEITY:YES"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:NO"); + + assertTrue("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertFalse("Character has deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:YES"); + + assertTrue("Character has deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:yes"); + + assertTrue("Character has deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:Yesmeth"); + + assertFalse("Character does not have Yesmeth as deity", + PrereqHandler.passes(prereq, character, null)); + } + + /** + * Test naming specific deities works as expected + * @throws Exception + */ + public void testName() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDEITY:Test Deity"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertTrue("Character has Test Deity selected", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDEITY:Test Deity,Zeus,Odin"); + + assertTrue("Character has Test Deity selected", + PrereqHandler.passes(prereq, character, null)); + } + + protected void setUp() + throws Exception + { + deity = new Deity(); + deity.setName("Test Deity"); + deity.setAlignment("NG"); + deity.setFollowerAlignments("012345678"); + + super.setUp(); + } +} Property changes on: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDeityTest.java ___________________________________________________________________ Name: svn:keywords + "Author Revision Date Id" Name: svn:eol-style + native Added: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDomainTest.java =================================================================== --- Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDomainTest.java (rev 0) +++ Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDomainTest.java 2006-04-18 03:23:09 UTC (rev 835) @@ -0,0 +1,157 @@ +/* + * PreDomainTest.java + * + * Copyright 2006 (C) Aaron Divinsky <boo...@ya...> + * + * 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 pcgen.AbstractCharacterTestCase; +import pcgen.core.CharacterDomain; +import pcgen.core.Deity; +import pcgen.core.Domain; +import pcgen.core.Globals; +import pcgen.core.PlayerCharacter; +import pcgen.persistence.lst.prereq.PreParserFactory; + +/** + * <code>PreDomainTest</code> tests that the PREDOMAIN tag is + * working correctly. + * + * Last Editor: $Author: $ + * Last Edited: $Date$ + * + * @author Aaron Divinsky <boo...@ya...> + * @version $Revision$ + */ +public class PreDomainTest extends AbstractCharacterTestCase +{ + private Deity deity; + + public static void main(final String[] args) + { + junit.swingui.TestRunner.run(PreDomainTest.class); + } + + /** + * @return Test + */ + public static Test suite() + { + return new TestSuite(PreDomainTest.class); + } + + /** + * Test to make sure it is not looking at deity domains + * @throws Exception + */ + public void testDeity() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDOMAIN:1,Good"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertFalse("Character's deity has Good domain", + PrereqHandler.passes(prereq, character, null)); + + CharacterDomain cd = new CharacterDomain(); + cd.setDomain(Globals.getDomainNamed("Good"), character); + character.addCharacterDomain(cd); + + assertTrue("Character has Good domain", + PrereqHandler.passes(prereq, character, null)); + } + + /** + * Test with multiple options + * @throws Exception + */ + public void testMultiple() + throws Exception + { + final PlayerCharacter character = getCharacter(); + + Prerequisite prereq; + + final PreParserFactory factory = PreParserFactory.getInstance(); + prereq = factory.parse("PREDOMAIN:1,Good,Law"); + + assertFalse("Character has no deity selected", + PrereqHandler.passes(prereq, character, null)); + + character.setAlignment(3, false); + character.setDeity(deity); + + assertFalse("Character's deity has Good domain", + PrereqHandler.passes(prereq, character, null)); + + CharacterDomain cd = new CharacterDomain(); + cd.setDomain(Globals.getDomainNamed("Good"), character); + character.addCharacterDomain(cd); + + assertTrue("Character has Good domain", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDOMAIN:2,Good,Law"); + + assertFalse("Character doesn't have Law domain", + PrereqHandler.passes(prereq, character, null)); + + prereq = factory.parse("PREDOMAIN:2,Good,Animal"); + + CharacterDomain cd1 = new CharacterDomain(); + cd1.setDomain(Globals.getDomainNamed("Animal"), character); + character.addCharacterDomain(cd1); + + assertTrue("Character's deity has Good and animal domains", + PrereqHandler.passes(prereq, character, null)); + } + + protected void setUp() + throws Exception + { + super.setUp(); + + Domain goodDomain = new Domain(); + goodDomain.setName("Good"); + Globals.addDomain(goodDomain); + + Domain animalDomain = new Domain(); + animalDomain.setName("Animal"); + Globals.addDomain(animalDomain); + + deity = new Deity(); + deity.setName("Test Deity"); + deity.setAlignment("NG"); + deity.setFollowerAlignments("012345678"); + deity.addDomain("Good"); + deity.addDomain("Animal"); + } +} Property changes on: Trunk/pcgen/code/src/test/pcgen/core/prereq/PreDomainTest.java ___________________________________________________________________ Name: svn:keywords + "Author Revision Date Id" Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |