/* * PObjectUtilitiesTest.java * Copyright 2006 (C) James Dempsey <jdempsey@users.sourceforge.net> * * 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 Apr 1, 2006 * * $Id: $ * */ package pcgen.core; import pcgen.AbstractCharacterTestCase; import pcgen.cdom.enumeration.ObjectKey; import pcgen.rules.context.LoadContext; import plugin.lsttokens.testsupport.BuildUtilities; /** * <code>PObjectUtilitiesTest</code> verifies that the PObjectUtilities * class is working correctly. * * * @author James Dempsey <jdempsey@users.sourceforge.net> */ @SuppressWarnings("nls") public class PObjectUtilitiesTest extends AbstractCharacterTestCase { private PCClass arcaneClass = null; private PCClass divineClass = null; private PCClass psionicClass = null; /** * @see pcgen.AbstractCharacterTestCase#setUp() */ @Override protected void setUp() throws Exception { LoadContext context = Globals.getContext(); arcaneClass = new PCClass(); arcaneClass.setName("TestArcane"); BuildUtilities.setFact(arcaneClass, "SpellType", "Arcane"); context.unconditionallyProcess(arcaneClass, "SPELLSTAT", "CHA"); arcaneClass.put(ObjectKey.SPELLBOOK, false); arcaneClass.put(ObjectKey.MEMORIZE_SPELLS, false); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(1), "KNOWN", "4,2"); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(1), "CAST", "3,1"); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(2), "KNOWN", "4,3,1"); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(2), "CAST", "3,2,1"); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(3), "KNOWN", "5,5,2,1"); context.unconditionallyProcess(arcaneClass.getOriginalClassLevel(3), "CAST", "5,5,3,1"); Globals.getContext().getReferenceContext().importObject(arcaneClass); divineClass = new PCClass(); divineClass.setName("TestDivine"); BuildUtilities.setFact(divineClass, "SpellType", "Divine"); context.unconditionallyProcess(divineClass, "SPELLSTAT", "WIS"); divineClass.put(ObjectKey.SPELLBOOK, false); divineClass.put(ObjectKey.MEMORIZE_SPELLS, true); context.unconditionallyProcess(divineClass.getOriginalClassLevel(3), "CAST", "3,1,0"); Globals.getContext().getReferenceContext().importObject(divineClass); psionicClass = new PCClass(); psionicClass.setName("TestPsion"); BuildUtilities.setFact(psionicClass, "SpellType", "Psionic"); context.unconditionallyProcess(psionicClass, "SPELLSTAT", "CHA"); psionicClass.put(ObjectKey.SPELLBOOK, false); psionicClass.put(ObjectKey.MEMORIZE_SPELLS, false); context.unconditionallyProcess(psionicClass.getOriginalClassLevel(1), "KNOWN", "0,3"); context.unconditionallyProcess(psionicClass.getOriginalClassLevel(2), "KNOWN", "0,5"); context.unconditionallyProcess(psionicClass.getOriginalClassLevel(3), "KNOWN", "0,5,2"); context.unconditionallyProcess(psionicClass.getOriginalClassLevel(4), "KNOWN", "0,5,4"); context.unconditionallyProcess(psionicClass.getOriginalClassLevel(5), "KNOWN", "0,5,4,2"); Globals.getContext().getReferenceContext().importObject(psionicClass); super.setUp(); } /** * @see pcgen.AbstractCharacterTestCase#tearDown() */ @Override protected void tearDown() throws Exception { super.tearDown(); } /** * Test the functioning of the setSpellLevelSelections method. * @throws Exception */ public void testSetSpellLevelSelections() throws Exception { // PObject pObj = new PObject(); // pObj.setName("My PObject"); // pObj.setChoiceString("SPELLLEVEL|1|TYPE=ARCANE|0|MAXLEVEL"); // // PlayerCharacter aPC = getCharacter(); // aPC.incrementClassLevel(2, arcaneClass); // aPC.incrementClassLevel(4, psionicClass); // // List availList = new ArrayList(); // List selectedList = new ArrayList(); // // // Test the calculation of max level for an arcane class. // PObjectUtilities.setSpellLevelSelections(pObj, availList, selectedList, true, aPC, // "SPELLLEVEL|1|TYPE=ARCANE|0|MAXLEVEL", new ArrayList(), new ArrayList()); // assertEquals("Number of available choices", 3, availList.size()); // assertEquals("2nd choice", "TestArcane 1", availList.get(1)); // assertEquals("3rd choice", "TestArcane 2", availList.get(2)); // // availList = new ArrayList(); // selectedList = new ArrayList(); // // // Test the calculation of max level for an arcane class. // PObjectUtilities.setSpellLevelSelections(pObj, availList, selectedList, true, aPC, // "SPELLLEVEL|1|TYPE=ARCANE|0|MAXLEVEL-1", new ArrayList(), new ArrayList()); // assertEquals("Number of available choices", 2, availList.size()); // assertEquals("2nd choice", "TestArcane 1", availList.get(1)); // assertEquals("1st choice", "TestArcane 0", availList.get(0)); // // availList = new ArrayList(); // selectedList = new ArrayList(); // // // Test the calculation of max level with brackets for a psionic class. // PObjectUtilities.setSpellLevelSelections(pObj, availList, selectedList, true, aPC, // "SPELLLEVEL|1|TYPE=PSIONIC|1|(MAXLEVEL-1)", new ArrayList(), new ArrayList()); // assertEquals("Number of available choices", 2, availList.size()); // assertEquals("1st choice", "TestPsion 1", availList.get(0)); // // availList = new ArrayList(); // selectedList = new ArrayList(); // // // Test the calculation of max level without brackets for a psionic class. // PObjectUtilities.setSpellLevelSelections(pObj, availList, selectedList, true, aPC, // "SPELLLEVEL|1|TYPE=PSIONIC|1|MAXLEVEL-1", new ArrayList(), new ArrayList()); // assertEquals("Number of available choices", 2, availList.size()); // assertEquals("1st choice", "TestPsion 1", availList.get(0)); } }