/* * AbilitySelectionTokenTest.java * Copyright 2013 (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 06/06/2013 * * $Id$ */ package actor.choose; import java.net.URISyntaxException; import pcgen.cdom.content.AbilitySelection; import pcgen.cdom.enumeration.ObjectKey; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.Globals; import pcgen.core.SettingsHandler; import pcgen.persistence.PersistenceLayerException; import pcgen.rules.context.LoadContext; import pcgen.rules.persistence.token.ParseResult; import org.junit.Before; import org.junit.Test; import plugin.lsttokens.choose.AbilitySelectionToken; import plugin.lsttokens.choose.StringToken; import static org.junit.Assert.*; /** * Unit test of the class AbilitySelectionToken. * * * @author James Dempsey <jdempsey@users.sourceforge.net> */ public class AbilitySelectionTokenTest { static final AbilitySelectionToken pca = new AbilitySelectionToken(); protected LoadContext context; @Before public void setUp() throws PersistenceLayerException, URISyntaxException { Globals.emptyLists(); SettingsHandler.getGame().clearLoadContext(); context = Globals.getContext(); context.getReferenceContext().importObject(AbilityCategory.FEAT); } @Test public void testEncodeChoice() { Ability item = construct("ItemName"); AbilitySelection as = new AbilitySelection(item, null); assertEquals("CATEGORY=FEAT|ItemName", pca.encodeChoice(as)); Ability paren = construct("ParenName (test)"); as = new AbilitySelection(paren, null); assertEquals("CATEGORY=FEAT|ParenName (test)", pca.encodeChoice(as)); Ability sel = construct("ChooseName"); sel.put(ObjectKey.MULTIPLE_ALLOWED, Boolean.TRUE); StringToken st = new plugin.lsttokens.choose.StringToken(); ParseResult pr = st.parseToken(Globals.getContext(), sel, "selection|Acrobatics"); assertTrue(pr.passed()); Globals.getContext().commit(); as = new AbilitySelection(sel,"selection"); assertEquals("CATEGORY=FEAT|ChooseName|selection", pca.encodeChoice(as)); } @Test public void testDecodeChoice() { try { pca.decodeChoice(context, "Category=Special Ability|ItemName"); fail(); } catch (IllegalArgumentException e) { // OK } Ability item = construct("ItemName"); AbilitySelection as = new AbilitySelection(item, null); assertEquals(as, pca.decodeChoice(context, "CATEGORY=FEAT|ItemName")); Ability paren = construct("ParenName (test)"); as = new AbilitySelection(paren, null); assertEquals(as, pca.decodeChoice(context, "CATEGORY=Feat|ParenName (test)")); Ability sel = construct("ChooseName"); sel.put(ObjectKey.MULTIPLE_ALLOWED, Boolean.TRUE); StringToken st = new plugin.lsttokens.choose.StringToken(); ParseResult pr = st.parseToken(Globals.getContext(), sel, "selection|Acrobatics"); assertTrue(pr.passed()); Globals.getContext().commit(); as = new AbilitySelection(sel, "selection"); assertEquals(as, pca.decodeChoice(context, "CATEGORY=Feat|ChooseName|selection")); } protected Ability construct(String one) { Ability obj = context.getReferenceContext().constructCDOMObject(Ability.class, one); context.getReferenceContext().reassociateCategory(AbilityCategory.FEAT, obj); return obj; } }