From: <th...@us...> - 2009-03-16 00:17:55
|
Revision: 9667 http://pcgen.svn.sourceforge.net/pcgen/?rev=9667&view=rev Author: thpr Date: 2009-03-16 00:17:40 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Prohibit PRExxx from being used with a .CLEAR or .CLEAR. Implemented for Deity LST file DOMAINS token Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/deity/DomainsTokenTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2009-03-16 00:12:41 UTC (rev 9666) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/deity/DomainsToken.java 2009-03-16 00:17:40 UTC (rev 9667) @@ -76,6 +76,7 @@ boolean first = true; boolean foundAll = false; boolean foundOther = false; + boolean foundClear = false; while (commaTok.hasMoreTokens()) { @@ -96,6 +97,7 @@ } context.getListContext().removeAllFromList(getTokenName(), deity, dl); + foundClear = true; } else if (tokString.startsWith(Constants.LST_DOT_CLEAR_DOT)) { @@ -112,6 +114,7 @@ } context.getListContext().removeFromList(getTokenName(), deity, dl, ref); + foundClear = true; } else if (Constants.LST_ALL.equals(tokString) || Constants.LST_ANY.equals(tokString)) @@ -142,6 +145,13 @@ while (pipeTok.hasMoreTokens()) { + if (foundClear) + { + Logging.log(Logging.LST_ERROR, + "Cannot use PREREQs when using .CLEAR or .CLEAR. in " + + getTokenName()); + return false; + } String tokString = pipeTok.nextToken(); Prerequisite prereq = getPrerequisite(tokString); if (prereq == null) Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/deity/DomainsTokenTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/deity/DomainsTokenTest.java 2009-03-16 00:12:41 UTC (rev 9666) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/deity/DomainsTokenTest.java 2009-03-16 00:17:40 UTC (rev 9667) @@ -117,6 +117,20 @@ loadContext.ref.constructCDOMObject(Domain.class, one); } + @Test + public void testInvalidClearDotPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR.TestWP1|PRELEVEL:MIN=4")); + assertNoSideEffects(); + } + + @Test + public void testInvalidClearPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR|PRELEVEL:MIN=4")); + assertNoSideEffects(); + } + @Override public void testRoundRobinTestAll() throws PersistenceLayerException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-03-16 00:25:39
|
Revision: 9668 http://pcgen.svn.sourceforge.net/pcgen/?rev=9668&view=rev Author: thpr Date: 2009-03-16 00:25:30 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Prohibit PRExxx from being used with a .CLEAR or .CLEAR. Implemented for Global VISION token Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VisionLst.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VisionLstTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VisionLst.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VisionLst.java 2009-03-16 00:17:40 UTC (rev 9667) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VisionLst.java 2009-03-16 00:25:30 UTC (rev 9668) @@ -83,12 +83,15 @@ ArrayList<AssociatedPrereqObject> edgeList = new ArrayList<AssociatedPrereqObject>(); + boolean foundClear = false; + while (true) { if (".CLEAR".equals(visionString)) { context.getListContext().removeAllFromList(getTokenName(), obj, Vision.VISIONLIST); + foundClear = true; } else if (visionString.startsWith(".CLEAR.")) { @@ -107,6 +110,7 @@ Logging.addParseMessage(Logging.LST_ERROR, e.getMessage()); return false; } + foundClear = true; } else if (visionString.startsWith("PRE") || visionString.startsWith("!PRE")) @@ -145,6 +149,15 @@ } visionString = aTok.nextToken(); } + + if (foundClear) + { + Logging.log(Logging.LST_ERROR, + "Cannot use PREREQs when using .CLEAR or .CLEAR. in " + + getTokenName()); + return false; + } + while (true) { Prerequisite prereq = getPrerequisite(visionString); Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VisionLstTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VisionLstTest.java 2009-03-16 00:17:40 UTC (rev 9667) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VisionLstTest.java 2009-03-16 00:25:30 UTC (rev 9668) @@ -220,6 +220,20 @@ } @Test + public void testInvalidClearDotPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR.Darkvision|PRERACE:1,Dwarf")); + assertNoSideEffects(); + } + + @Test + public void testInvalidClearPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR|PRERACE:1,Dwarf")); + assertNoSideEffects(); + } + + @Test public void testValidDistanceFormula() throws PersistenceLayerException { assertTrue(parse("Darkvision (zzzb32)")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-03-16 00:26:42
|
Revision: 9669 http://pcgen.svn.sourceforge.net/pcgen/?rev=9669&view=rev Author: thpr Date: 2009-03-16 00:26:33 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Prohibit PRExxx from being used with a .CLEAR or .CLEAR. Implemented for Global VFEAT token Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VFeatLstTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java 2009-03-16 00:25:30 UTC (rev 9668) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/VFeatLst.java 2009-03-16 00:26:33 UTC (rev 9669) @@ -77,6 +77,7 @@ ArrayList<AssociatedPrereqObject> edgeList = new ArrayList<AssociatedPrereqObject>(); boolean first = true; + boolean foundClear = false; AbilityCategory category = AbilityCategory.FEAT; Nature nature = Ability.Nature.VIRTUAL; @@ -93,6 +94,7 @@ } context.getListContext().removeAllFromList(getTokenName(), obj, list); + foundClear = true; } else { @@ -129,6 +131,14 @@ } } + if (foundClear) + { + Logging.log(Logging.LST_ERROR, + "Cannot use PREREQs when using .CLEAR in " + + getTokenName()); + return false; + } + while (true) { Prerequisite prereq = getPrerequisite(token); Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VFeatLstTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VFeatLstTest.java 2009-03-16 00:25:30 UTC (rev 9668) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/VFeatLstTest.java 2009-03-16 00:26:33 UTC (rev 9669) @@ -199,6 +199,20 @@ } @Test + public void testInvalidClearDotPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR.TestWP1|PRELEVEL:4")); + assertNoSideEffects(); + } + + @Test + public void testInvalidClearPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR|PRELEVEL:4")); + assertNoSideEffects(); + } + + @Test public void testRoundRobinPre() throws PersistenceLayerException { construct(primaryContext, "TestWP1"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-03-16 00:27:11
|
Revision: 9670 http://pcgen.svn.sourceforge.net/pcgen/?rev=9670&view=rev Author: thpr Date: 2009-03-16 00:27:02 +0000 (Mon, 16 Mar 2009) Log Message: ----------- Prohibit PRExxx from being used with a .CLEAR or .CLEAR. Implemented for Global SAB token Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java 2009-03-16 00:26:33 UTC (rev 9669) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java 2009-03-16 00:27:02 UTC (rev 9670) @@ -77,6 +77,8 @@ + getTokenName()); return false; } + + boolean foundClear = false; if (Constants.LST_DOT_CLEAR.equals(firstToken)) { @@ -86,6 +88,7 @@ return true; } firstToken = tok.nextToken(); + foundClear = true; } if (Constants.LST_DOT_CLEAR.equals(firstToken)) @@ -139,6 +142,14 @@ // CONSIDER This is a HACK and not the long term strategy of SA: sa.setName(saName.toString()); + if (foundClear) + { + Logging.log(Logging.LST_ERROR, + "Cannot use PREREQs when using .CLEAR in " + + getTokenName()); + return false; + } + while (true) { Prerequisite prereq = getPrerequisite(token); Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java 2009-03-16 00:26:33 UTC (rev 9669) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java 2009-03-16 00:27:02 UTC (rev 9670) @@ -119,6 +119,20 @@ } @Test + public void testInvalidClearDotPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR.Darkvision|PRERACE:1,Dwarf")); + assertNoSideEffects(); + } + + @Test + public void testInvalidClearPre() throws PersistenceLayerException + { + assertFalse(parse(".CLEAR|PRERACE:1,Dwarf")); + assertNoSideEffects(); + } + + @Test public void testRoundRobinBase() throws PersistenceLayerException { runRoundRobin("SA Number One"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2009-07-11 02:36:12
|
Revision: 10037 http://pcgen.svn.sourceforge.net/pcgen/?rev=10037&view=rev Author: jdempsey Date: 2009-07-11 02:36:10 +0000 (Sat, 11 Jul 2009) Log Message: ----------- Fix bug: Stack Trace with NPC Generator Issue#: 2806015 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/base/util/WeightedCollection.java branches/5.16.x/pcgen/code/src/utest/pcgen/base/util/WeightedCollectionTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/base/util/WeightedCollection.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/base/util/WeightedCollection.java 2009-07-10 23:17:10 UTC (rev 10036) +++ branches/5.16.x/pcgen/code/src/java/pcgen/base/util/WeightedCollection.java 2009-07-11 02:36:10 UTC (rev 10037) @@ -627,7 +627,8 @@ public void remove() { - throw new UnsupportedOperationException(); + iter.remove(); + currentEntry = null; } } Modified: branches/5.16.x/pcgen/code/src/utest/pcgen/base/util/WeightedCollectionTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/pcgen/base/util/WeightedCollectionTest.java 2009-07-10 23:17:10 UTC (rev 10036) +++ branches/5.16.x/pcgen/code/src/utest/pcgen/base/util/WeightedCollectionTest.java 2009-07-11 02:36:10 UTC (rev 10037) @@ -408,15 +408,10 @@ assertEquals(I3, it5); Object it6 = it.next(); assertNull(it6); - Object it7 = it.next(); + assertTrue(it.hasNext()); + it.remove(); + assertFalse(it.hasNext()); try { - it.remove(); - fail(); - } catch (UnsupportedOperationException e) { - // OK - } - assertNull(it7); - try { it.next(); fail(); } catch (NoSuchElementException e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-10-16 00:54:23
|
Revision: 10737 http://pcgen.svn.sourceforge.net/pcgen/?rev=10737&view=rev Author: thpr Date: 2009-10-16 00:54:16 +0000 (Fri, 16 Oct 2009) Log Message: ----------- [Data Converter] Ability name truncated in PREABILITY Issue#: 2874846 Backport Issue#: 2874846 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/output/prereq/PrerequisiteWriterTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java 2009-10-16 00:46:44 UTC (rev 10736) +++ branches/5.16.x/pcgen/code/src/java/pcgen/persistence/lst/prereq/AbstractPrerequisiteListParser.java 2009-10-16 00:54:16 UTC (rev 10737) @@ -58,12 +58,12 @@ } if (prereq.getKind() != null && prereq.getKind().equalsIgnoreCase(kind)) { - String key = prereq.getKey(); + String key = prereq.getKey().trim(); int index = key.indexOf('('); int endIndex = key.lastIndexOf(')'); - if ((index >= 0) && (endIndex >= 0)) + if ((index >= 0) && (endIndex == key.length() - 1)) { String subKey = key.substring(index + 1, endIndex).trim(); key = key.substring(0, index).trim(); Modified: branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/output/prereq/PrerequisiteWriterTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/output/prereq/PrerequisiteWriterTest.java 2009-10-16 00:46:44 UTC (rev 10736) +++ branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/output/prereq/PrerequisiteWriterTest.java 2009-10-16 00:54:16 UTC (rev 10737) @@ -408,7 +408,7 @@ "PREATT:should_be_numeric", "PREATT:1", "PRESTAT:should_be_numeric,STR=18", "PRESTAT:1,STR=18", "PRESTAT:1,Strength=18", "PRESTAT:1,Str=18", - + "PREABILITY:1,CATEGORY=Special Ability,Dire Animal (Dire Rat)_Companion", "PREABILITY:1,CATEGORY=Special Ability,Dire Animal (Dire Rat)_Companion", // // To cause exceptions "PREDR:1,+1=should_be_numeric", "", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-06-29 08:45:30
|
Revision: 12375 http://pcgen.svn.sourceforge.net/pcgen/?rev=12375&view=rev Author: jdempsey Date: 2010-06-29 08:45:23 +0000 (Tue, 29 Jun 2010) Log Message: ----------- Fix bug: Spell Editor: Spell copy loses classes and domains - Backport to 5.16 Issue#: CODE-137 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/gui/LstEditorMain.java branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/LoadContext.java Added Paths: ----------- branches/5.16.x/pcgen/code/src/test/pcgen/rules/ branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/ branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/LoadContextTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/gui/LstEditorMain.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/gui/LstEditorMain.java 2010-06-29 08:29:07 UTC (rev 12374) +++ branches/5.16.x/pcgen/code/src/java/pcgen/gui/LstEditorMain.java 2010-06-29 08:45:23 UTC (rev 12375) @@ -190,7 +190,6 @@ { try { - final PObject newItem = lstItem.clone(); final String nameEnding = " of " + lstItem.getKeyName(); // @@ -203,7 +202,9 @@ if (findObject(newName) == null) { - newItem.setName(newName); + final PObject newItem = + Globals.getContext().cloneInMasterLists( + lstItem, newName); prepareCopy(lstItem, newItem); Modified: branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java 2010-06-29 08:29:07 UTC (rev 12374) +++ branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/AbstractListContext.java 2010-06-29 08:45:23 UTC (rev 12375) @@ -37,9 +37,11 @@ import pcgen.cdom.base.CDOMObject; import pcgen.cdom.base.CDOMObjectUtilities; import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.MasterListInterface; import pcgen.cdom.base.PrereqObject; import pcgen.cdom.base.SimpleAssociatedObject; import pcgen.cdom.enumeration.AssociationKey; +import pcgen.core.Globals; public abstract class AbstractListContext { @@ -737,4 +739,49 @@ } protected abstract ListCommitStrategy getCommitStrategy(); + + /** + * Create a copy of any associations to the original object and link them + * to the new object. This will scan lists such as ClassSpellLists and + * DomainSpellLists which may link to the original object. For each + * association found, a new association will be created linking to the new object + * and the association will be added to the list. + * + * @param <T> The type of CDOMObject being copied (e.g. Spell, Domain etc) + * @param cdoOld The original object being copied. + * @param cdoNew The new object to be linked in. + */ + @SuppressWarnings("unchecked") + public <T extends CDOMObject> void cloneInMasterLists(T cdoOld, T cdoNew) + { + MasterListInterface masterLists = Globals.getMasterLists(); + for (CDOMReference ref : masterLists.getActiveLists()) + { + Collection<AssociatedPrereqObject> assocs = masterLists + .getAssociations(ref, cdoOld); + if (assocs != null) + { + for (AssociatedPrereqObject apo : assocs) + { +// Logging.debugPrint("Found assoc from " + ref + " to " +// + apo.getAssociationKeys() + " / " +// + apo.getAssociation(AssociationKey.OWNER)); + AssociatedPrereqObject newapo = getCommitStrategy() + .addToMasterList( + apo.getAssociation(AssociationKey.TOKEN), + cdoNew, ref, cdoNew); + newapo.addAllPrerequisites(apo.getPrerequisiteList()); + for (AssociationKey assocKey : apo.getAssociationKeys()) + { + if (assocKey != AssociationKey.TOKEN + && assocKey != AssociationKey.OWNER) + { + newapo.setAssociation(assocKey, apo + .getAssociation(assocKey)); + } + } + } + } + } + } } Modified: branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/LoadContext.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2010-06-29 08:29:07 UTC (rev 12374) +++ branches/5.16.x/pcgen/code/src/java/pcgen/rules/context/LoadContext.java 2010-06-29 08:45:23 UTC (rev 12375) @@ -252,6 +252,34 @@ return newObj; } + /** + * Create a copy of a CDOMObject duplicating any references to the old + * object. + * + * @param <T> The type of CDOMObject being copied (e.g. Spell, Domain etc) + * @param cdoOld The original object being copied. + * @param newName The name that should be given to the new object. + * @return The newly created CDOMObject. + */ + @SuppressWarnings("unchecked") + public <T extends CDOMObject> T cloneInMasterLists(T cdo, String newName) + { + T newObj; + try + { + newObj = (T) cdo.clone(); + newObj.setName(newName); + list.cloneInMasterLists(cdo, newObj); + } + catch (CloneNotSupportedException e) + { + Logging.errorPrint("Failed to clone " + cdo, e); + e.printStackTrace(); + return null; + } + return newObj; + } + private static final PrerequisiteWriter PREREQ_WRITER = new PrerequisiteWriter(); Added: branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/LoadContextTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/LoadContextTest.java (rev 0) +++ branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/LoadContextTest.java 2010-06-29 08:45:23 UTC (rev 12375) @@ -0,0 +1,106 @@ +/** + * LoadContextTest.java + * Copyright James Dempsey, 2010 + * + * 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 + * + * Created on 28/06/2010 3:33:01 PM + * + * $Id$ + */ +package pcgen.rules.context; + +import java.util.Collection; + +import junit.framework.TestCase; +import pcgen.cdom.base.AssociatedPrereqObject; +import pcgen.cdom.base.CDOMReference; +import pcgen.cdom.base.MasterListInterface; +import pcgen.cdom.enumeration.AssociationKey; +import pcgen.cdom.list.ClassSpellList; +import pcgen.core.Globals; +import pcgen.core.PCClass; +import pcgen.core.spell.Spell; +import pcgen.rules.persistence.TokenUtilities; +import pcgen.util.TestHelper; + +/** + * The Class <code>LoadContextTest</code> checks the fucntion fo the LoadCOntext class. + * + * <br/> + * Last Editor: $Author$ + * Last Edited: $Date$ + * + * @author James Dempsey <jde...@us...> + * @version $Revision$ + */ +public class LoadContextTest extends TestCase +{ + + /** + * Test method for {@link pcgen.rules.context.LoadContext#cloneInMasterLists(pcgen.cdom.base.CDOMObject, java.lang.String)}. + */ + public final void testCloneInMasterListsSimple() + { + Spell testSpell = TestHelper.makeSpell("LoadContextTest"); + Spell newSpell = Globals.getContext().cloneInMasterLists(testSpell, "New Spell"); + assertEquals("Old spell name incorrect", "LoadContextTest", testSpell.getDisplayName()); + assertEquals("New spell name incorrect", "New Spell", newSpell.getDisplayName()); + } + + /** + * Test method for {@link pcgen.rules.context.LoadContext#cloneInMasterLists(pcgen.cdom.base.CDOMObject, java.lang.String)}. + * Verify that associations from other objects to the object being cloned + * are copied over. + */ + public final void testCloneInMasterListsAssoc() + { + final LoadContext context = Globals.getContext(); + + Spell testSpell = TestHelper.makeSpell("LoadContextTest"); + PCClass wiz = TestHelper.makeClass("Wizard"); + CDOMReference<ClassSpellList> ref = TokenUtilities.getTypeOrPrimitive(context, + ClassSpellList.class, wiz.getKeyName()); + AssociatedPrereqObject edge = + context.getListContext().addToMasterList("CLASSES", testSpell, + ref, testSpell); + edge.setAssociation(AssociationKey.SPELL_LEVEL, 1); + context.ref.buildDerivedObjects(); + context.resolveReferences(); + context.commit(); + + Spell newSpell = context.cloneInMasterLists(testSpell, "New Spell"); + context.commit(); + assertEquals("Old spell name incorrect", "LoadContextTest", testSpell.getDisplayName()); + assertEquals("New spell name incorrect", "New Spell", newSpell.getDisplayName()); + + // Check associations + MasterListInterface masterLists = Globals.getMasterLists(); + Collection<AssociatedPrereqObject> assoc = + masterLists.getAssociations(ref, testSpell); + assertEquals("Incorrect size of assoc list for orig spell", 1, assoc.size()); + AssociatedPrereqObject apo = assoc.iterator().next(); + assertEquals("Incorrect level", 1, apo.getAssociation( + AssociationKey.SPELL_LEVEL).intValue()); + + assoc = masterLists.getAssociations(ref, newSpell); + assertEquals("Incorrect size of assoc list for new spell", 1, assoc + .size()); + apo = assoc.iterator().next(); + assertEquals("Incorrect level", 1, apo.getAssociation( + AssociationKey.SPELL_LEVEL).intValue()); + } + +} Property changes on: branches/5.16.x/pcgen/code/src/test/pcgen/rules/context/LoadContextTest.java ___________________________________________________________________ Added: svn:keywords + Date Author Revision Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <za...@us...> - 2010-07-09 08:58:23
|
Revision: 12487 http://pcgen.svn.sourceforge.net/pcgen/?rev=12487&view=rev Author: zaister Date: 2010-07-09 08:58:16 +0000 (Fri, 09 Jul 2010) Log Message: ----------- Backport INFOTEXT tag changes to 5.16.x branch Issue#: CODE-161 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java branches/5.16.x/pcgen/code/src/java/pcgen/gui/GameModes.java branches/5.16.x/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java branches/5.16.x/pcgen/code/src/java/pcgen/gui/sources/MainSource.java branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/InstallLoaderTest.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/campaign/InfotextTokenTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/ListKey.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -155,6 +155,8 @@ public static final ListKey<String> SAVE = new ListKey<String>(); /** SECTION 15 - a ListKey */ public static final ListKey<String> SECTION_15 = new ListKey<String>(); + /** INFO_TEXT - a ListKey */ + public static final ListKey<String> INFO_TEXT = new ListKey<String>(); /** SELECTED_WEAPON_PROF_BONUS - a ListKey */ public static final ListKey<String> SELECTED_WEAPON_PROF_BONUS = new ListKey<String>(); /** SPECIAL_ABILITY - a ListKey */ Modified: branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/pcgen/cdom/enumeration/StringKey.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -36,7 +36,7 @@ NAME, KEY_NAME, WORSHIPPERS, TITLE, HOLY_ITEM, MASTER_HP_FORMULA, MASTER_CHECK_FORMULA, MASTER_BAB_FORMULA, BIRTHPLACE, BIRTHDAY, BOOK_TYPE, CHOICE_STRING, DESTINATION, PAGE_USAGE, MINDEVVER, MINVER, BIO, DESCRIPTION, GENRE, HELP, APPEARANCE, CATCH_PHRASE, - OUTPUT_NAME, INFO_TEXT, PUB_NAME_LONG, COST, PUB_NAME_SHORT, + OUTPUT_NAME, PUB_NAME_LONG, COST, PUB_NAME_SHORT, CURRENT_EQUIP_SET_NAME, REGION, PUB_NAME_WEB, SETTING, TEMP_DESCRIPTION, TRAIT2, TRAIT1, SKIN_COLOR, HAIR_COLOR, SUB_REGION, SPEECH_TENDENCY, PHOBIAS, INTERESTS, RESIDENCE, SPELLBOOK_AUTO_ADD_KNOWN, PLAYERS_NAME, HANDED, HAIR_STYLE, PORTRAIT_PATH, EYE_COLOR, LOCATION, Modified: branches/5.16.x/pcgen/code/src/java/pcgen/gui/GameModes.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/gui/GameModes.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/pcgen/gui/GameModes.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -223,7 +223,12 @@ JRadioButtonMenuItem campaignMenuItem = new JRadioButtonMenuItem(aCamp.getDisplayName()); gameModeGroup.add(firstSubMenu.add(campaignMenuItem)); - Utility.setDescription(campaignMenuItem, aCamp.getSafe(StringKey.INFO_TEXT)); + String description = ""; + for (String info : aCamp.getListFor(ListKey.INFO_TEXT)) + { + description += info + "\n"; + } + Utility.setDescription(campaignMenuItem, description); campaigns.add(aCamp); campaignMenuItems.add(campaignMenuItem); campaignMenuItem.addActionListener(checkBoxHandler); Modified: branches/5.16.x/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/pcgen/gui/editor/SourceBasePanel.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -89,7 +89,6 @@ private JTextField destination; private String game; private JTextField genre; - private JTextField infoText; private JTextField pubNameLong; private JTextField pubNameShort; private JTextField pubNameWeb; @@ -140,7 +139,7 @@ theCampaign.put(ObjectKey.IS_D20, isD20.getSelectedObjects() != null); theCampaign.put(ObjectKey.SHOW_IN_MENU, showInMenu.getSelectedObjects() != null); theCampaign.put(ObjectKey.IS_LICENSED, isLicensed.getSelectedObjects() != null); - setStringValue(StringKey.INFO_TEXT, infoText.getText()); + theCampaign.removeListFor(ListKey.INFO_TEXT); setStringValue(StringKey.BOOK_TYPE, bookType.getSelectedItem().toString()); theCampaign.put(StringKey.DESTINATION, destination.getText().trim()); theCampaign.removeListFor(ListKey.LICENSE); @@ -160,6 +159,11 @@ theCampaign.addToListFor(ListKey.LICENSE, ((String) i.next())); } + for (Iterator i = sourceModel.getInfotextList().iterator(); i.hasNext();) + { + theCampaign.addToListFor(ListKey.INFO_TEXT, (String) i.next()); + } + for (Iterator i = sourceModel.getCopyrightList().iterator(); i.hasNext();) { theCampaign.addToListFor(ListKey.SECTION_15, (String) i.next()); @@ -195,7 +199,7 @@ theCampaign = (Campaign) thisPObject; sourceModel.setLists(buildOptionsList(theCampaign), theCampaign.getSafeListFor(ListKey.LICENSE), - theCampaign.getSafeListFor(ListKey.SECTION_15)); + theCampaign.getSafeListFor(ListKey.INFO_TEXT), theCampaign.getSafeListFor(ListKey.SECTION_15)); rank.setValue(Integer.valueOf(theCampaign.getSafe(IntegerKey.CAMPAIGN_RANK))); game = StringUtil.join(theCampaign.getSafeListFor(ListKey.GAME_MODE), ", "); @@ -227,8 +231,6 @@ isD20.setSelected(theCampaign.getSafe(ObjectKey.IS_D20)); isLicensed.setSelected(theCampaign.getSafe(ObjectKey.IS_LICENSED)); showInMenu.setSelected(theCampaign.getSafe(ObjectKey.SHOW_IN_MENU)); - infoText.setText(theCampaign.getSafe(StringKey.INFO_TEXT)); - infoText.setCaretPosition(0); //Scroll to beginning of inserted text bookType.setSelectedItem(theCampaign.getSafe(StringKey.BOOK_TYPE)); setting.setText(theCampaign.getSafe(StringKey.SETTING)); setting.setCaretPosition(0); //Scroll to beginning of inserted text @@ -279,6 +281,11 @@ return returnList; } + private void addInfotext() + { + sourceModel.addInfotext(); + } + private void addCopyright() { sourceModel.addCopyright(); @@ -313,10 +320,8 @@ gmxcrawl = new JCheckBox("XCrawl"); gmsidewinder = new JCheckBox("Sidewinder"); - infoText = new JTextField(); // SwingConstants.LEFT is equivalent to JTextField.LEFT but more // 'correct' in a Java coding context (it is a static reference) - infoText.setHorizontalAlignment(SwingConstants.LEFT); pubNameWeb = new JTextField(); pubNameWeb.setHorizontalAlignment(SwingConstants.LEFT); pubNameShort = new JTextField(); @@ -451,10 +456,6 @@ , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); - aPanel.add(new JLabel("Info Text"), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 - , GridBagConstraints.EAST, - GridBagConstraints.NONE, - new Insets(5, 5, 5, 2), 0, 0)); aPanel.add(new JLabel("Game Mode"), new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0 , GridBagConstraints.EAST, GridBagConstraints.NONE, @@ -496,10 +497,6 @@ , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 2, 5, 5), 0, 0)); - aPanel.add(infoText, new GridBagConstraints(1, 0, 8, 1, 1.0, 0.0 - , GridBagConstraints.WEST, - GridBagConstraints.HORIZONTAL, - new Insets(5, 2, 5, 5), 0, 0)); aPanel.add(pubNameWeb, new GridBagConstraints(1, 2, 2, 1, 0.8, 0.0 , GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, @@ -544,6 +541,7 @@ aPanel = new JPanel(); final JComboBoxEx legalCombo = new JComboBoxEx(); legalCombo.addItem("COPYRIGHT"); + legalCombo.addItem("INFOTEXT"); legalCombo.addItem("LICENSE"); legalCombo.addItem("OPTION"); legalCombo.setSelectedIndex(0); @@ -560,10 +558,13 @@ case 0 : //COPYRIGHT addCopyright(); break; - case 1 : //LICENSE + case 1 : //INFOTEXT + addInfotext(); + break; + case 2 : //LICENSE addLicense(); break; - case 2 : //OPTION + case 3 : //OPTION addOption(); break; } @@ -603,6 +604,7 @@ final class SourceTableModel extends AbstractTableModel { + List<String> infotextList = null; List<String> copyrightList = null; List<String> licenseList = null; List<String> optionList = null; @@ -640,6 +642,11 @@ return "Out Of Bounds"; } + public List<String> getInfotextList() + { + return infotextList; + } + public List<String> getCopyrightList() { return copyrightList; @@ -650,7 +657,8 @@ return licenseList; } - public void setLists(List<String> optList, List<String> licList, List<String> copyList) + public void setLists(List<String> optList, List<String> licList, List<String> infoList, + List<String> copyList) { optionList = (optList == null) ? new ArrayList<String>() : optList; optionValues = new ArrayList<String>(); @@ -666,6 +674,7 @@ } licenseList = (licList == null) ? new ArrayList<String>() : licList; + infotextList = (infoList == null) ? new ArrayList<String>() : infoList; copyrightList = (copyList == null) ? new ArrayList<String>() : copyList; } @@ -686,7 +695,7 @@ return 0; } - return optionList.size() + licenseList.size() + copyrightList.size(); + return optionList.size() + licenseList.size() + infotextList.size() + copyrightList.size(); } public void setValueAt(String aValue, int rowIndex, int columnIndex) @@ -723,6 +732,15 @@ rowIndex -= copyrightList.size(); + if (rowIndex < infotextList.size()) + { + infotextList.set(rowIndex, aValue); + + return; + } + + rowIndex -= infotextList.size(); + if (rowIndex < licenseList.size()) { licenseList.set(rowIndex, aValue); @@ -747,6 +765,18 @@ rowIndex -= optionList.size(); + if (rowIndex < infotextList.size()) + { + if (columnIndex == 0) + { + return "INFOTEXT:"; + } + + return infotextList.get(rowIndex); + } + + rowIndex -= infotextList.size(); + if (rowIndex < copyrightList.size()) { if (columnIndex == 0) @@ -772,6 +802,11 @@ return ""; } + public void addInfotext() + { + infotextList.add(""); + } + public void addCopyright() { copyrightList.add(""); @@ -805,6 +840,15 @@ row -= optionList.size(); + if (row < infotextList.size()) + { + infotextList.remove(row); + + return; + } + + row -= infotextList.size(); + if (row < copyrightList.size()) { copyrightList.remove(row); Modified: branches/5.16.x/pcgen/code/src/java/pcgen/gui/sources/MainSource.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/gui/sources/MainSource.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/pcgen/gui/sources/MainSource.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -576,14 +576,19 @@ } boolean infoDisplayed = false; - bString = aCamp.getSafe(StringKey.INFO_TEXT); + List<String> info = aCamp.getListFor(ListKey.INFO_TEXT); + if (info != null) + { + if (!infoDisplayed) + { + sb.append("<br>"); + } - if (bString.length() > 0) - { - sb.append("<p><b>INFORMATION</b>:<br>") - .append(bString) - .append("</p>"); - infoDisplayed = true; + sb.append("<b>INFORMATION</b>:<br>"); + for (String infotext : info) + { + sb.append(infotext).append("<br>"); + } } List<String> copyright = aCamp.getListFor(ListKey.SECTION_15); Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/campaign/InfotextToken.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -18,20 +18,29 @@ package plugin.lsttokens.campaign; import java.net.URI; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.StringKey; import pcgen.core.Campaign; +import pcgen.persistence.PersistenceLayerException; import pcgen.persistence.lst.InstallLstToken; +import pcgen.rules.context.Changes; import pcgen.rules.context.LoadContext; +import pcgen.rules.persistence.token.AbstractToken; import pcgen.rules.persistence.token.CDOMPrimaryToken; import pcgen.util.Logging; /** * Class deals with INFOTEXT Token */ -public class InfotextToken implements CDOMPrimaryToken<Campaign>, InstallLstToken +public class InfotextToken extends AbstractToken implements + CDOMPrimaryToken<Campaign>, InstallLstToken { + @Override public String getTokenName() { return "INFOTEXT"; @@ -39,30 +48,38 @@ public boolean parse(Campaign campaign, String value, URI sourceUri) { - campaign.put(StringKey.INFO_TEXT, value); + campaign.addToListFor(ListKey.INFO_TEXT, value); return true; } - public boolean parse(LoadContext context, Campaign camp, String value) + public boolean parse(LoadContext context, Campaign campaign, String value) + throws PersistenceLayerException { - if (value == null || value.length() == 0) + if (isEmpty(value)) { - Logging.log(Logging.LST_ERROR, getTokenName() + " arguments may not be empty"); return false; } - context.getObjectContext().put(camp, StringKey.INFO_TEXT, value); + context.obj.addToList(campaign, ListKey.INFO_TEXT, value); return true; } - public String[] unparse(LoadContext context, Campaign camp) + public String[] unparse(LoadContext context, Campaign campaign) { - String infotext = - context.getObjectContext().getString(camp, StringKey.INFO_TEXT); - if (infotext == null) + Changes<String> changes = + context.getObjectContext().getListChanges(campaign, + ListKey.INFO_TEXT); + List<String> set = new ArrayList<String>(); + Collection<String> added = changes.getAdded(); + if (added != null && !added.isEmpty()) { + set.addAll(added); + } + if (set.isEmpty()) + { + //Okay, no info text return null; } - return new String[]{infotext}; + return set.toArray(new String[set.size()]); } public Class<Campaign> getTokenClass() Modified: branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/InstallLoaderTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/InstallLoaderTest.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/test/pcgen/persistence/lst/InstallLoaderTest.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -179,7 +179,8 @@ .get(1)); assertEquals("Checking copyright 3", COPYRIGHT_3, camp.getSafeListFor(ListKey.SECTION_15) .get(2)); - assertEquals("Checking info text", INFOTEXT, camp.getSafe(StringKey.INFO_TEXT)); + assertEquals("Checking info text", INFOTEXT, camp.getSafeListFor(ListKey.INFO_TEXT) + .get(0)); assertEquals("Checking pub name short", PUBNAMESHORT, camp.getSafe(StringKey.PUB_NAME_SHORT)); assertEquals("Checking pub name long", PUBNAMELONG, camp.getSafe(StringKey.PUB_NAME_LONG)); assertEquals("Checking pub name web", SOURCEWEB, camp.getSafe(StringKey.PUB_NAME_WEB)); Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/campaign/InfotextTokenTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/campaign/InfotextTokenTest.java 2010-07-09 08:56:47 UTC (rev 12486) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/campaign/InfotextTokenTest.java 2010-07-09 08:58:16 UTC (rev 12487) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007 Tom Parker <th...@us...> + * Infotext (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 @@ -17,14 +17,20 @@ */ package plugin.lsttokens.campaign; -import pcgen.cdom.enumeration.StringKey; +import java.util.List; + +import org.junit.Test; + +import pcgen.cdom.enumeration.ListKey; import pcgen.core.Campaign; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.persistence.CDOMLoader; import pcgen.rules.persistence.token.CDOMPrimaryToken; -import plugin.lsttokens.testsupport.AbstractStringTokenTestCase; +import plugin.lsttokens.testsupport.AbstractTokenTestCase; import plugin.lsttokens.testsupport.CDOMTokenLoader; +import plugin.lsttokens.testsupport.ConsolidationRule; -public class InfotextTokenTest extends AbstractStringTokenTestCase<Campaign> +public class InfotextTokenTest extends AbstractTokenTestCase<Campaign> { static InfotextToken token = new InfotextToken(); @@ -49,15 +55,203 @@ return token; } + public ListKey<?> getListKey() + { + return ListKey.INFO_TEXT; + } + + @Test + public void dummyTest() + { + // Just to get Eclipse to recognize this as a JUnit 4.0 Test Case + } + + @Test + public void testValidInputSimple() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Rheinhessen")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains((Object) "Rheinhessen")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputNonEnglish() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Nieder�sterreich")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains((Object) "Nieder�sterreich")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputSpace() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Finger Lakes")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains((Object) "Finger Lakes")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputHyphen() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Languedoc-Roussillon")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains((Object) "Languedoc-Roussillon")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputY() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Yarra Valley")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains((Object) "Yarra Valley")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputList() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Nieder�sterreich")); + assertTrue(parse("Finger Lakes")); + coll = primaryProf.getListFor(listKey); + assertEquals(2, coll.size()); + assertTrue(coll.contains((Object) "Nieder�sterreich")); + assertTrue(coll.contains((Object) "Finger Lakes")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testValidInputMultList() throws PersistenceLayerException + { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + List<?> coll; + assertTrue(parse("Nieder�sterreich")); + assertTrue(parse("Finger Lakes")); + assertTrue(parse("Languedoc-Roussillon")); + assertTrue(parse("Rheinhessen")); + coll = primaryProf.getListFor(listKey); + assertEquals(4, coll.size()); + assertTrue(coll.contains((Object) "Nieder�sterreich")); + assertTrue(coll.contains((Object) "Finger Lakes")); + assertTrue(coll.contains((Object) "Languedoc-Roussillon")); + assertTrue(coll.contains((Object) "Rheinhessen")); + assertTrue(primaryContext.ref.validate(null)); + } + } + + @Test + public void testInvalidListEmpty() throws PersistenceLayerException + { + assertFalse(parse("")); + assertNull(primaryProf.getListFor(getListKey())); + assertNoSideEffects(); + } + + @Test + public void testInvalidEmpty() throws PersistenceLayerException + { + assertFalse(parse("")); + assertNull(primaryProf.getListFor(getListKey())); + assertNoSideEffects(); + } + + @Test + public void testRoundRobinBase() throws PersistenceLayerException + { + runRoundRobin("Rheinhessen"); + } + + @Test + public void testRoundRobinWithSpace() throws PersistenceLayerException + { + runRoundRobin("Finger Lakes"); + } + + @Test + public void testRoundRobinNonEnglishAndN() throws PersistenceLayerException + { + runRoundRobin("Nieder�sterreich"); + } + + @Test + public void testRoundRobinHyphen() throws PersistenceLayerException + { + runRoundRobin("Languedoc-Roussillon"); + } + + @Test + public void testRoundRobinY() throws PersistenceLayerException + { + runRoundRobin("Yarra Valley"); + } + + @Test + public void testRoundRobinThree() throws PersistenceLayerException + { + runRoundRobin("Languedoc-Roussillon", "Rheinhessen", "Yarra Valley"); + } + + @Test + public void testRoundRobinThreeDupe() throws PersistenceLayerException + { + runRoundRobin("Languedoc-Roussillon", "Rheinhessen", "Rheinhessen"); + } + @Override - protected boolean isClearLegal() + protected String getAlternateLegalValue() { - return false; + return "Languedoc-Roussillon"; } @Override - public StringKey getStringKey() + protected String getLegalValue() { - return StringKey.INFO_TEXT; + return "Yarra Valley"; } + + @Override + protected ConsolidationRule getConsolidationRule() + { + return ConsolidationRule.SEPARATE; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-10-09 05:19:42
|
Revision: 13358 http://pcgen.svn.sourceforge.net/pcgen/?rev=13358&view=rev Author: jdempsey Date: 2010-10-09 05:19:35 +0000 (Sat, 09 Oct 2010) Log Message: ----------- Fix bug: SERVESAS not functioning for PRERACE test with wildcard Issue#: CODE-241 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/pretokens/test/PreRaceTester.java branches/5.16.x/pcgen/code/src/test/pcgen/core/prereq/PreRaceTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/pretokens/test/PreRaceTester.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/pretokens/test/PreRaceTester.java 2010-10-09 04:21:12 UTC (rev 13357) +++ branches/5.16.x/pcgen/code/src/java/plugin/pretokens/test/PreRaceTester.java 2010-10-09 05:19:35 UTC (rev 13358) @@ -193,6 +193,10 @@ { ++runningTotal; } + else + { + runningTotal += checkForServesAsRaceWildcard(requiredRace, wild, pcRace, servesAsRace); + } } else { @@ -224,6 +228,19 @@ return countedTotal(prereq, runningTotal); } + private int checkForServesAsRaceWildcard(String requiredRace, int wild, Race pcRace, HashMap<Race, HashSet<Race>> servesAsRace) + { + for(Race imitators : servesAsRace.keySet()) + { + if (servesAsRace.get(imitators).contains(pcRace) + && imitators.getDisplayName().regionMatches(true, 0, requiredRace, 0, wild)) + { + return 1; + } + } + return 0; + } + private void getImitators(HashMap<Race, HashSet<Race>> serveAsRaces,PlayerCharacter character) { for (Race theRace : Globals.getContext().ref.getConstructedCDOMObjects(Race.class)) Modified: branches/5.16.x/pcgen/code/src/test/pcgen/core/prereq/PreRaceTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/core/prereq/PreRaceTest.java 2010-10-09 04:21:12 UTC (rev 13357) +++ branches/5.16.x/pcgen/code/src/test/pcgen/core/prereq/PreRaceTest.java 2010-10-09 05:19:35 UTC (rev 13358) @@ -301,4 +301,41 @@ final boolean passes = PrereqHandler.passes(prereq, character, null); assertTrue(passes); } + + /** + * Test to make sure that PRERACE with wildcarded names functions + * correctly with SERVESAS + */ + public void testPassServesAsNameWildcard() + { + final PlayerCharacter character = getCharacter(); + + final Race race = new Race(); + race.setName("Human"); + Globals.getContext().ref.importObject(race); + + final Race fake = new Race(); + fake.setName("NotHuman"); + Globals.getContext().ref.importObject(fake); + + race.addToListFor(ListKey.SERVES_AS_RACE, CDOMDirectSingleRef + .getRef(fake)); + character.setRace(fake); + + // Check the servesas condition + final Prerequisite prereq = new Prerequisite(); + prereq.setKind("race"); + prereq.setKey("human%"); + prereq.setOperator(PrerequisiteOperator.EQ); + boolean passes = PrereqHandler.passes(prereq, character, null); + assertTrue("PRERACE:1,human% should have been passed", passes); + + prereq.setKey("NotHuman%"); + passes = PrereqHandler.passes(prereq, character, null); + assertTrue("PRERACE:1,NotHuman% should have been passed", passes); + + prereq.setKey("Elf%"); + passes = PrereqHandler.passes(prereq, character, null); + assertFalse("PRERACE:1,Elf% should not have been passed", passes); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <th...@us...> - 2009-03-16 22:50:37
|
Revision: 9676 http://pcgen.svn.sourceforge.net/pcgen/?rev=9676&view=rev Author: thpr Date: 2009-03-16 22:50:25 +0000 (Mon, 16 Mar 2009) Log Message: ----------- fix SVN 9670 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java 2009-03-16 22:47:38 UTC (rev 9675) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/SabLst.java 2009-03-16 22:50:25 UTC (rev 9676) @@ -91,6 +91,14 @@ foundClear = true; } + if (firstToken.startsWith("PRE") || firstToken.startsWith("!PRE")) + { + Logging.log(Logging.LST_ERROR, + "Cannot use PREREQs when using .CLEAR in " + + getTokenName()); + return false; + } + if (Constants.LST_DOT_CLEAR.equals(firstToken)) { Logging.log(Logging.LST_ERROR, "SA tag confused by redundant '.CLEAR'" @@ -145,7 +153,7 @@ if (foundClear) { Logging.log(Logging.LST_ERROR, - "Cannot use PREREQs when using .CLEAR in " + "Cannot use PREREQs when using .CLEAR and a Special Ability in " + getTokenName()); return false; } Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java 2009-03-16 22:47:38 UTC (rev 9675) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/SabLstTest.java 2009-03-16 22:50:25 UTC (rev 9676) @@ -119,16 +119,16 @@ } @Test - public void testInvalidClearDotPre() throws PersistenceLayerException + public void testInvalidClearPre() throws PersistenceLayerException { - assertFalse(parse(".CLEAR.Darkvision|PRERACE:1,Dwarf")); + assertFalse(parse(".CLEAR|PRERACE:1,Dwarf")); assertNoSideEffects(); } @Test - public void testInvalidClearPre() throws PersistenceLayerException + public void testInvalidClearSabPre() throws PersistenceLayerException { - assertFalse(parse(".CLEAR|PRERACE:1,Dwarf")); + assertFalse(parse(".CLEAR|SabText|PRERACE:1,Dwarf")); assertNoSideEffects(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2009-06-20 05:05:43
|
Revision: 9971 http://pcgen.svn.sourceforge.net/pcgen/?rev=9971&view=rev Author: jdempsey Date: 2009-06-20 05:05:34 +0000 (Sat, 20 Jun 2009) Log Message: ----------- Fix bug: Unbalanced Parens in Spell cause Exception Issue#: 2809325 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/DurationToken.java branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/RangeToken.java branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/TargetareaToken.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/DescLstTest.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/DurationTokenTest.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/RangeTokenTest.java branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/TargetAreaTokenTest.java Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/DurationToken.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/DurationToken.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/DurationToken.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -69,6 +69,12 @@ } else { + if (!StringUtil.hasBalancedParens(value)) { + Logging.addParseMessage(Logging.LST_ERROR, + "Unbalanced parentheses in " + getTokenName() + " '" + value + + "' used in spell " + spell); + return false; + } context.getObjectContext().addToList(spell, ListKey.DURATION, tok); Globals.addDurationSet(tok); Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/RangeToken.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/RangeToken.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/RangeToken.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -69,6 +69,12 @@ } else { + if (!StringUtil.hasBalancedParens(value)) { + Logging.addParseMessage(Logging.LST_ERROR, + "Unbalanced parentheses in " + getTokenName() + " '" + value + + "' used in spell " + spell); + return false; + } context.getObjectContext().addToList(spell, ListKey.RANGE, tok); Globals.addSpellRangesSet(tok); } Modified: branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/TargetareaToken.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/TargetareaToken.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/java/plugin/lsttokens/spell/TargetareaToken.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -17,6 +17,7 @@ */ package plugin.lsttokens.spell; +import pcgen.base.lang.StringUtil; import pcgen.cdom.enumeration.StringKey; import pcgen.core.Globals; import pcgen.core.spell.Spell; @@ -42,6 +43,12 @@ Logging.errorPrint(getTokenName() + " arguments may not be empty"); return false; } + if (!StringUtil.hasBalancedParens(value)) { + Logging.addParseMessage(Logging.LST_ERROR, + "Unbalanced parentheses in " + getTokenName() + " '" + value + + "' used in spell " + spell); + return false; + } Globals.addSpellTargetSet(value); context.getObjectContext().put(spell, StringKey.TARGET_AREA, value); return true; Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/DescLstTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/DescLstTest.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/DescLstTest.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -119,6 +119,20 @@ } @Test + public void testGoodParentheses() throws PersistenceLayerException { + assertTrue(parse("(first)")); + } + + @Test + public void testBadParentheses() throws PersistenceLayerException { + assertFalse("Missing end paren should have been flagged.", parse("(first")); + assertFalse("Missing start paren should have been flagged.", parse("first)")); + assertFalse("Missing start paren should have been flagged.", parse("(fir)st)")); + assertFalse("Out of order parens should have been flagged.", parse(")(fir(st)")); + assertNoSideEffects(); + } + + @Test public void testRoundRobinBase() throws PersistenceLayerException { runRoundRobin("SA Number One"); Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/DurationTokenTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/DurationTokenTest.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/DurationTokenTest.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -21,6 +21,7 @@ import pcgen.cdom.enumeration.ListKey; import pcgen.core.spell.Spell; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.persistence.CDOMLoader; import pcgen.rules.persistence.token.CDOMPrimaryToken; import plugin.lsttokens.testsupport.AbstractTypeSafeListTestCase; @@ -81,15 +82,22 @@ return true; } - @Test - public void dummyTest() - { - // Just to get Eclipse to recognize this as a JUnit 4.0 Test Case - } - @Override protected boolean requiresPreconstruction() { return false; } + + @Test + public void testGoodParentheses() throws PersistenceLayerException { + assertTrue(parse("(first)")); + } + + @Test + public void testBadParentheses() throws PersistenceLayerException { + assertFalse("Missing end paren should have been flagged.", parse("(first")); + assertFalse("Missing start paren should have been flagged.", parse("first)")); + assertFalse("Missing start paren should have been flagged.", parse("(fir)st)")); + assertFalse("Out of order parens should have been flagged.", parse(")(fir(st)")); + } } Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/RangeTokenTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/RangeTokenTest.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/RangeTokenTest.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -17,10 +17,13 @@ */ package plugin.lsttokens.spell; +import java.util.List; + import org.junit.Test; import pcgen.cdom.enumeration.ListKey; import pcgen.core.spell.Spell; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.persistence.CDOMLoader; import pcgen.rules.persistence.token.CDOMPrimaryToken; import plugin.lsttokens.testsupport.AbstractTypeSafeListTestCase; @@ -92,4 +95,32 @@ { return false; } + + public void testGoodParentheses() throws PersistenceLayerException { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + primaryContext.ref.constructCDOMObject(getCDOMClass(), + "Rheinhessen"); + List<?> coll; + assertTrue(parse("(first)")); + coll = primaryProf.getListFor(listKey); + assertEquals(1, coll.size()); + assertTrue(coll.contains(getConstant("(first)"))); + assertTrue(primaryContext.ref.validate(null)); + } + } + + public void testBadParentheses() throws PersistenceLayerException { + ListKey<?> listKey = getListKey(); + if (listKey != null) + { + primaryContext.ref.constructCDOMObject(getCDOMClass(), + "Rheinhessen"); + assertFalse("Missing end paren should have been flagged.", parse("(first")); + assertFalse("Missing start paren should have been flagged.", parse("first)")); + assertFalse("Missing start paren should have been flagged.", parse("(fir)st)")); + assertFalse("Out of order parens should have been flagged.", parse(")(fir(st)")); + } + } } Modified: branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/TargetAreaTokenTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/TargetAreaTokenTest.java 2009-06-19 01:57:17 UTC (rev 9970) +++ branches/5.16.x/pcgen/code/src/utest/plugin/lsttokens/spell/TargetAreaTokenTest.java 2009-06-20 05:05:34 UTC (rev 9971) @@ -21,6 +21,7 @@ import pcgen.cdom.enumeration.StringKey; import pcgen.core.spell.Spell; +import pcgen.persistence.PersistenceLayerException; import pcgen.rules.persistence.CDOMLoader; import pcgen.rules.persistence.token.CDOMPrimaryToken; import plugin.lsttokens.testsupport.AbstractStringTokenTestCase; @@ -64,8 +65,15 @@ } @Test - public void dummyTest() - { - // Just to get Eclipse to recognize this as a JUnit 4.0 Test Case + public void testGoodParentheses() throws PersistenceLayerException { + assertTrue(parse("(first)")); } + + @Test + public void testBadParentheses() throws PersistenceLayerException { + assertFalse("Missing end paren should have been flagged.", parse("(first")); + assertFalse("Missing start paren should have been flagged.", parse("first)")); + assertFalse("Missing start paren should have been flagged.", parse("(fir)st)")); + assertFalse("Out of order parens should have been flagged.", parse(")(fir(st)")); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-10-10 04:12:26
|
Revision: 13389 http://pcgen.svn.sourceforge.net/pcgen/?rev=13389&view=rev Author: jdempsey Date: 2010-10-10 04:12:20 +0000 (Sun, 10 Oct 2010) Log Message: ----------- Fix bug: MOVEADD building off of base speed Issue#: CODE-214 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java branches/5.16.x/pcgen/code/src/test/pcgen/core/PlayerCharacterTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2010-10-10 03:34:13 UTC (rev 13388) +++ branches/5.16.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2010-10-10 04:12:20 UTC (rev 13389) @@ -8447,7 +8447,7 @@ if (!found) { - setMyMoveRates(moveType, 0.0, Double.valueOf(0.0), "", 1); + setMyMoveRates(moveType, 0.0, Double.valueOf(0.0), "", 0); } } } Modified: branches/5.16.x/pcgen/code/src/test/pcgen/core/PlayerCharacterTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/core/PlayerCharacterTest.java 2010-10-10 03:34:13 UTC (rev 13388) +++ branches/5.16.x/pcgen/code/src/test/pcgen/core/PlayerCharacterTest.java 2010-10-10 04:12:20 UTC (rev 13389) @@ -1176,9 +1176,15 @@ TestHelper.makeAbility("quickFlySlowSwim", AbilityCategory.FEAT .getAbilityCategory(), "Foo"); PCTemplate template = TestHelper.makeTemplate("slowFlyQuickSwim"); + PCTemplate template2 = TestHelper.makeTemplate("dig"); + final BonusObj digBonus = Bonus.newBonus("MOVEADD|TYPE.Dig|60"); + assertNotNull("Failed to create bonus", digBonus); + template2.addToListFor(ListKey.BONUS, digBonus); + //template.addm LoadContext context = Globals.getContext(); context.ref.importObject(quickFlySlowSwim); + context.ref.importObject(template2); context.unconditionallyProcess(human, "MOVE", "Walk,30"); context.unconditionallyProcess(quickFlySlowSwim, "MOVE", "Swim,10,Fly,30"); @@ -1209,5 +1215,11 @@ pc.adjustMoveRates(); assertEquals(30.0, pc.movementOfType("Swim"), 0.1); assertEquals(30.0, pc.movementOfType("Fly"), 0.1); + + pc.addTemplate(template2); + pc.adjustMoveRates(); + assertEquals(30.0, pc.movementOfType("Swim"), 0.1); + assertEquals(30.0, pc.movementOfType("Fly"), 0.1); + assertEquals(60.0, pc.movementOfType("Dig"), 0.1); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-10-28 11:47:14
|
Revision: 13589 http://pcgen.svn.sourceforge.net/pcgen/?rev=13589&view=rev Author: jdempsey Date: 2010-10-28 11:47:08 +0000 (Thu, 28 Oct 2010) Log Message: ----------- Fix bug: OUTPUTNAME:[NAME] strips all trailing parentheses Issue#: CODE-364 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/core/PObject.java branches/5.16.x/pcgen/code/src/test/pcgen/core/PObjectTest.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/core/PObject.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/core/PObject.java 2010-10-28 11:41:14 UTC (rev 13588) +++ branches/5.16.x/pcgen/code/src/java/pcgen/core/PObject.java 2010-10-28 11:47:08 UTC (rev 13589) @@ -585,9 +585,9 @@ } //we just take from the first ( to the first ), typically there should only be one of each - final String subName = displayName.substring(displayName.indexOf('(') + 1, displayName.indexOf(')')); //the stuff inside the () + final String subName = displayName.substring(displayName.indexOf('(') + 1, displayName.lastIndexOf(')')); //the stuff inside the () final StringTokenizer tok = new StringTokenizer(subName, "/"); - final StringBuffer newNameBuff = new StringBuffer(); + final StringBuilder newNameBuff = new StringBuilder(); while (tok.hasMoreTokens()) { Modified: branches/5.16.x/pcgen/code/src/test/pcgen/core/PObjectTest.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/core/PObjectTest.java 2010-10-28 11:41:14 UTC (rev 13588) +++ branches/5.16.x/pcgen/code/src/test/pcgen/core/PObjectTest.java 2010-10-28 11:47:08 UTC (rev 13589) @@ -37,6 +37,7 @@ import pcgen.cdom.content.ChallengeRating; import pcgen.cdom.enumeration.ListKey; import pcgen.cdom.enumeration.ObjectKey; +import pcgen.cdom.enumeration.StringKey; import pcgen.cdom.list.AbilityList; import pcgen.core.Ability.Nature; import pcgen.core.analysis.BonusAddition; @@ -59,7 +60,10 @@ @SuppressWarnings("nls") public class PObjectTest extends AbstractCharacterTestCase { + private static final String NAME = "Companion (Race (Subtype))"; + private PObject testObj; + /** * Constructs a new <code>PObjectTest</code>. * @@ -431,11 +435,56 @@ } /** + * Test method for {@link pcgen.core.analysis.OutputNameFormatting#getOutputName(pcgen.core.PObject)}. + * Check that a default output name will work correctly. + */ + public final void testGetOutputNameDisplay() + { + assertEquals("Expected unmodified name", NAME, testObj.getOutputName()); + } + + /** + * Test method for {@link pcgen.core.analysis.OutputNameFormatting#getOutputName(pcgen.core.PObject)}. + * Check that the [BASE] macro in output name will work correctly. + */ + public final void testGetOutputNameBase() + { + testObj.put(StringKey.OUTPUT_NAME, "[BASE]"); + assertEquals("Expected just the name outside of brackets", "Companion", + testObj.getOutputName()); + + testObj.put(StringKey.OUTPUT_NAME, "Prefix [BASE]"); + assertEquals("Expected the BASE macro to be ignored", "Prefix [BASE]", + testObj.getOutputName()); + } + + /** + * Test method for {@link pcgen.core.analysis.OutputNameFormatting#getOutputName(pcgen.core.PObject)}. + * Check that the [NAME] macro in output name will work correctly. + */ + public final void testGetOutputNameName() + { + testObj.put(StringKey.OUTPUT_NAME, "[NAME]"); + assertEquals("Incorrect [NAME] expansion", "Race (Subtype)", + testObj.getOutputName()); + + testObj.put(StringKey.OUTPUT_NAME, "Prefix [NAME]"); + assertEquals("Incorrect [NAME] expansion", "Prefix Race (Subtype)", + testObj.getOutputName()); + + testObj.put(StringKey.OUTPUT_NAME, "Prefix [NAME]|[NAME]"); + assertEquals("Incorrect double [NAME] expansion", "Prefix Race (Subtype)|Race (Subtype)", + testObj.getOutputName()); + } + + /** * @see pcgen.AbstractCharacterTestCase#setUp() */ @Override protected void setUp() throws Exception { + testObj = new PObject(); + testObj.setName(NAME); super.setUp(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jde...@us...> - 2010-11-08 21:12:14
|
Revision: 13809 http://pcgen.svn.sourceforge.net/pcgen/?rev=13809&view=rev Author: jdempsey Date: 2010-11-08 21:12:08 +0000 (Mon, 08 Nov 2010) Log Message: ----------- Fix bug: Batch processing of PCs failing - Make character tests work again Issue#: CODE-376 Modified Paths: -------------- branches/5.16.x/pcgen/code/src/java/pcgen/gui/pcGenGUI.java branches/5.16.x/pcgen/code/src/test/pcgen/gui/pcGenGUITestCase.java Modified: branches/5.16.x/pcgen/code/src/java/pcgen/gui/pcGenGUI.java =================================================================== --- branches/5.16.x/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2010-11-08 11:59:10 UTC (rev 13808) +++ branches/5.16.x/pcgen/code/src/java/pcgen/gui/pcGenGUI.java 2010-11-08 21:12:08 UTC (rev 13809) @@ -154,7 +154,7 @@ if (!Globals.getUseGUI()) { runNonGui(); - System.exit(0); + return; } // If we get here then we are running with a GUI @@ -372,6 +372,7 @@ templateName = System.getProperty("pcgen.templatefile"); inFileName = System.getProperty("pcgen.inputfile"); outFileName = System.getProperty("pcgen.outputfile"); + String dontExitOnComplete = System.getProperty("pcgen.dont.exit"); startupArgs = args; @@ -494,6 +495,11 @@ SettingsHandler.initGameModes(); new pcGenGUI(d); + + if (!Globals.getUseGUI() && !"Y".equals(dontExitOnComplete)) + { + System.exit(0); + } } public static void showHpFrame(PlayerCharacter aPC) Modified: branches/5.16.x/pcgen/code/src/test/pcgen/gui/pcGenGUITestCase.java =================================================================== --- branches/5.16.x/pcgen/code/src/test/pcgen/gui/pcGenGUITestCase.java 2010-11-08 11:59:10 UTC (rev 13808) +++ branches/5.16.x/pcgen/code/src/test/pcgen/gui/pcGenGUITestCase.java 2010-11-08 21:12:08 UTC (rev 13809) @@ -139,6 +139,7 @@ System.setProperty("pcgen.outputfile", "code/testsuite/output/" + character + ".xml"); System.setProperty("pcgen.options", "options.ini.junit"); + System.setProperty("pcgen.dont.exit", "Y"); // Fire off PCGen, which will produce an XML file pcGenGUI.main(Globals.EMPTY_STRING_ARRAY); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |