From: <th...@us...> - 2008-08-06 22:47:58
|
Revision: 7416 http://pcgen.svn.sourceforge.net/pcgen/?rev=7416&view=rev Author: thpr Date: 2008-08-06 22:48:06 +0000 (Wed, 06 Aug 2008) Log Message: ----------- tests Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/core/Description.java Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java Added Paths: ----------- Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/BenefitTokenTest.java Trunk/pcgen/code/src/utest/plugin/lsttokens/equipment/SPropTokenTest.java Modified: Trunk/pcgen/code/src/java/pcgen/core/Description.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/core/Description.java 2008-08-06 22:37:08 UTC (rev 7415) +++ Trunk/pcgen/code/src/java/pcgen/core/Description.java 2008-08-06 22:48:06 UTC (rev 7416) @@ -315,4 +315,37 @@ { return getPCCText(); } + + + @Override + public int hashCode() + { + return theComponents.size() + 7 * getPrerequisiteCount() + 31 + * (theVariables == null ? 0 : theVariables.size()); + } + + @Override + public boolean equals(Object o) + { + if (o == this) + { + return true; + } + if (!(o instanceof Description)) + { + return false; + } + Description other = (Description) o; + if (theVariables == null) + { + if (other.theVariables != null) + { + return false; + } + } + return theComponents.equals(other.theComponents) + && (theVariables == null || theVariables.equals(other.theVariables)) + && equalsPrereqObject(other); + } + } Modified: Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java =================================================================== --- Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java 2008-08-06 22:37:08 UTC (rev 7415) +++ Trunk/pcgen/code/src/java/plugin/lsttokens/ability/BenefitToken.java 2008-08-06 22:48:06 UTC (rev 7416) @@ -49,8 +49,12 @@ return true; } - context.getObjectContext().addToList(ability, ListKey.BENEFIT, - parseBenefit(value)); + Description ben = parseBenefit(value); + if (ben == null) + { + return false; + } + context.getObjectContext().addToList(ability, ListKey.BENEFIT, ben); return true; } @@ -90,7 +94,7 @@ { for (Description d : added) { - list.add(EntityEncoder.encode(d.getPCCText())); + list.add(d.getPCCText()); } } if (list.isEmpty()) @@ -109,10 +113,21 @@ */ public Description parseBenefit(final String aDesc) { + if (isEmpty(aDesc) || hasIllegalSeparator('|', aDesc)) + { + return null; + } final StringTokenizer tok = new StringTokenizer(aDesc, Constants.PIPE); - final Description desc = new Description(EntityEncoder.decode(tok - .nextToken())); + String firstToken = tok.nextToken(); + if (PreParserFactory.isPreReqString(firstToken)) + { + Logging.errorPrint("Invalid " + getTokenName() + ": " + aDesc); + Logging.errorPrint(" PRExxx can not be only value"); + return null; + } + final Description desc = new Description(EntityEncoder + .decode(firstToken)); boolean isPre = false; while (tok.hasMoreTokens()) @@ -131,7 +146,7 @@ + aDesc); Logging .errorPrint(" PRExxx must be at the END of the Token"); - isPre = false; + return null; } desc.addVariable(token); } Added: Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/BenefitTokenTest.java =================================================================== --- Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/BenefitTokenTest.java (rev 0) +++ Trunk/pcgen/code/src/utest/plugin/lsttokens/ability/BenefitTokenTest.java 2008-08-06 22:48:06 UTC (rev 7416) @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2007 Tom Parker <th...@us...> + * + * This program 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 program 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package plugin.lsttokens.ability; + +import java.net.URISyntaxException; + +import org.junit.Before; +import org.junit.Test; + +import pcgen.core.Ability; +import pcgen.persistence.PersistenceLayerException; +import pcgen.rules.persistence.CDOMLoader; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import plugin.lsttokens.testsupport.AbstractTokenTestCase; +import plugin.lsttokens.testsupport.CDOMTokenLoader; +import plugin.lsttokens.testsupport.TokenRegistration; +import plugin.pretokens.parser.PreClassParser; +import plugin.pretokens.parser.PreRaceParser; +import plugin.pretokens.writer.PreClassWriter; +import plugin.pretokens.writer.PreRaceWriter; + +public class BenefitTokenTest extends AbstractTokenTestCase<Ability> +{ + + static BenefitToken token = new BenefitToken(); + static CDOMTokenLoader<Ability> loader = new CDOMTokenLoader<Ability>( + Ability.class); + + @Override + public Class<Ability> getCDOMClass() + { + return Ability.class; + } + + @Override + public CDOMLoader<Ability> getLoader() + { + return loader; + } + + @Override + public CDOMPrimaryToken<Ability> getToken() + { + return token; + } + + PreClassParser preclass = new PreClassParser(); + PreClassWriter preclasswriter = new PreClassWriter(); + PreRaceParser prerace = new PreRaceParser(); + PreRaceWriter preracewriter = new PreRaceWriter(); + + @Override + @Before + public void setUp() throws PersistenceLayerException, URISyntaxException + { + super.setUp(); + TokenRegistration.register(preclass); + TokenRegistration.register(prerace); + TokenRegistration.register(preclasswriter); + TokenRegistration.register(preracewriter); + } + + @Test + public void testInvalidDoublePipe() throws PersistenceLayerException + { + assertFalse(parse("SA Number %||VarF")); + assertNoSideEffects(); + } + + @Test + public void testInvalidEndingPipe() throws PersistenceLayerException + { + assertFalse(parse("SA Number|")); + assertNoSideEffects(); + } + + @Test + public void testInvalidStartingPipe() throws PersistenceLayerException + { + assertFalse(parse("|Var")); + assertNoSideEffects(); + } + + @Test + public void testInvalidVarAfterPre() throws PersistenceLayerException + { + assertFalse(parse("SA % plus %|Var|PRECLASS:1,Fighter|Var2")); + assertNoSideEffects(); + } + + @Test + public void testInvalidOnlyPre() throws PersistenceLayerException + { + assertFalse(parse("PRECLASS:1,Fighter")); + assertNoSideEffects(); + } + + @Test + public void testRoundRobinBase() throws PersistenceLayerException + { + runRoundRobin("SA Number One"); + } + + @Test + public void testRoundRobinVariable() throws PersistenceLayerException + { + runRoundRobin("SA Number %|Variab"); + } + + @Test + public void testRoundRobinPre() throws PersistenceLayerException + { + runRoundRobin("SA Number One|PRECLASS:1,Fighter=1"); + } + + @Test + public void testRoundRobinDoublePre() throws PersistenceLayerException + { + runRoundRobin("SA Number One|PRECLASS:1,Fighter=1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinVarDoublePre() throws PersistenceLayerException + { + runRoundRobin("SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human"); + } + + @Test + public void testRoundRobinCompound() throws PersistenceLayerException + { + runRoundRobin( + "SA Number % before %|Var|TwoVar|PRECLASS:1,Fighter=1|PRERACE:1,Human", + "SA Number One|PRECLASS:1,Fighter=1"); + } + +} Added: Trunk/pcgen/code/src/utest/plugin/lsttokens/equipment/SPropTokenTest.java =================================================================== --- Trunk/pcgen/code/src/utest/plugin/lsttokens/equipment/SPropTokenTest.java (rev 0) +++ Trunk/pcgen/code/src/utest/plugin/lsttokens/equipment/SPropTokenTest.java 2008-08-06 22:48:06 UTC (rev 7416) @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2007 Tom Parker <th...@us...> + * + * This program 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 program 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ +package plugin.lsttokens.equipment; + +import org.junit.Test; + +import pcgen.core.Equipment; +import pcgen.persistence.PersistenceLayerException; +import pcgen.rules.persistence.CDOMLoader; +import pcgen.rules.persistence.token.CDOMPrimaryToken; +import plugin.lsttokens.testsupport.AbstractTextPropertyTokenTestCase; +import plugin.lsttokens.testsupport.CDOMTokenLoader; + +public class SPropTokenTest extends + AbstractTextPropertyTokenTestCase<Equipment> +{ + static SpropToken token = new SpropToken(); + static CDOMTokenLoader<Equipment> loader = new CDOMTokenLoader<Equipment>( + Equipment.class); + + @Override + public Class<Equipment> getCDOMClass() + { + return Equipment.class; + } + + @Override + public CDOMLoader<Equipment> getLoader() + { + return loader; + } + + @Override + public CDOMPrimaryToken<Equipment> getToken() + { + return token; + } + + @Test + public void testInvalidDoubleClear() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR|.CLEAR|Second")); + assertNoSideEffects(); + } + + @Test + public void testInvalidClearAsVariable() throws PersistenceLayerException + { + assertFalse(parse("Second|.CLEAR")); + assertNoSideEffects(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |