/* * Copyright (c) 2007 Tom Parker <thpr@users.sourceforge.net> * * 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.AbstractCDOMTokenTestCase; import plugin.lsttokens.testsupport.CDOMTokenLoader; import plugin.lsttokens.testsupport.ConsolidationRule; public class ContainsTokenTest extends AbstractCDOMTokenTestCase<Equipment> { static ContainsToken token = new ContainsToken(); static CDOMTokenLoader<Equipment> loader = new CDOMTokenLoader<Equipment>(); @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 testInvalidInputEmpty() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "").passed()); assertNoSideEffects(); } @Test public void testInvalidInputNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "X4").passed()); assertNoSideEffects(); } @Test public void testInvalidInputReducingFirstNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "X4%60").passed()); assertNoSideEffects(); } @Test public void testInvalidInputReducingSecondNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "50%X4").passed()); assertNoSideEffects(); } @Test public void testInvalidInputSplatReducing() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*50%40").passed()); assertNoSideEffects(); } @Test public void testInvalidInputTwoPercent() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "50%40%30").passed()); assertNoSideEffects(); } @Test public void testInvalidInputTrailingSplat() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "4*").passed()); assertNoSideEffects(); } @Test public void testInvalidInputEmbeddedSplat() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5*4").passed()); assertNoSideEffects(); } @Test public void testInvalidInputNaNTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "X4|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputReducingFirstNaNTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "X4%60|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputReducingSecondNaNTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "50%X4|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputSplatReducingTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*50%40|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputTwoPercentTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "50%40%30|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputTrailingSplatTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "4*|Any=25").passed()); assertNoSideEffects(); } @Test public void testInvalidInputEmbeddedSplatTyped() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5*4|Any=25").passed()); assertNoSideEffects(); } public void testInvalidNoCapacity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "|Cookies").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityNoTypeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Any=").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityZeroQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Cookies=0").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityNegativeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Cookies=-10").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityTypeQuantityNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Any=4X").passed()); assertNoSideEffects(); } public void testInvalidCapacityUselessPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityTypeLeadingDoublePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5||Any=4").passed()); assertNoSideEffects(); } @Test public void testNegativeWeightCapacity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "-5|Any=4").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityTypeTrailingPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Any=4|").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityTypeDoubleEquals() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Any=4=3").passed()); assertNoSideEffects(); } @Test public void testInvalidCapacityTypeMiddlePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "5|Cookies=4||Crackers=3").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessNoTypeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Any=").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessZeroQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Cookies=0").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessNegativeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Cookies=-10").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessTypeQuantityNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Any=4X").passed()); assertNoSideEffects(); } public void testInvalidWeightlessUselessPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessTypeLeadingDoublePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5||Any=4").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessTypeTrailingPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Any=4|").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessTypeDoubleEquals() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Any=4=3").passed()); assertNoSideEffects(); } @Test public void testInvalidWeightlessTypeMiddlePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "*5|Cookies=4||Crackers=3").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedNoTypeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Any=").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedTypeQuantityNaN() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Any=4X").passed()); assertNoSideEffects(); } public void testInvalidReducedUselessPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedTypeLeadingDoublePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30||Any=4").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedTypeTrailingPipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Any=4|").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedZeroQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Cookies=0").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedNegativeQuantity() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Cookies=-10").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedTypeDoubleEquals() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Any=4=3").passed()); assertNoSideEffects(); } @Test public void testInvalidReducedTypeMiddlePipe() throws PersistenceLayerException { assertFalse(token.parseToken(primaryContext, primaryProf, "40%30|Cookies=4||Crackers=3").passed()); assertNoSideEffects(); } @Test public void testRoundRobinSimple() throws PersistenceLayerException { this.runRoundRobin("500"); } @Test public void testRoundRobinSimpleWeightless() throws PersistenceLayerException { this.runRoundRobin("*500"); } @Test public void testRoundRobinSimpleReducing() throws PersistenceLayerException { this.runRoundRobin("50%40"); } @Test public void testRoundRobinTypeLimited() throws PersistenceLayerException { this.runRoundRobin("50|Cookies"); } @Test public void testRoundRobinTypeLimitMix() throws PersistenceLayerException { this.runRoundRobin("5|Cookies=4|Crackers"); } @Test public void testRoundRobinWeightlessTypeLimitMix() throws PersistenceLayerException { this.runRoundRobin("*15|Cookies=4|Crackers"); } @Test public void testRoundRobinLimitedReducing() throws PersistenceLayerException { this.runRoundRobin("50%30|Any=25"); } @Test public void testRoundRobinCountLimitedReducing() throws PersistenceLayerException { this.runRoundRobin("25%UNLIM|Any=100"); } @Test public void testRoundRobinCountLimitedCursedAdding() throws PersistenceLayerException { this.runRoundRobin("-35%UNLIM|Any=100"); } @Test public void testRoundRobinTypeQuantityLimited() throws PersistenceLayerException { this.runRoundRobin("500|Potions=100"); } @Test public void testRoundRobinTypeUnlimited() throws PersistenceLayerException { this.runRoundRobin("UNLIM"); } @Test public void testRoundRobinTypeCountLimited() throws PersistenceLayerException { this.runRoundRobin("UNLIM|Any=100"); } @Test public void testRoundRobinSubUnlimited() throws PersistenceLayerException { this.runRoundRobin("3150|Any"); } @Test public void testRoundRobinTypeMultipleWeightUnlimited() throws PersistenceLayerException { this.runRoundRobin("UNLIM|Total=10|Paper=10|Scroll=10"); } @Override protected String getAlternateLegalValue() { return "UNLIM|Any=100"; } @Override protected String getLegalValue() { return "500|Potions=50"; } // CONSIDER Optional Input methods // this.runRoundRobin("UNLIM|Total=10|Paper=10|Scroll=UNLIM"); // this.runRoundRobin("UNLIM|Paper=10|Scroll=UNLIM"); @Override protected ConsolidationRule getConsolidationRule() { return ConsolidationRule.OVERWRITE; } }