/* * Copyright (c) 2014 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 pcgen.io; import java.util.List; import pcgen.cdom.content.CNAbility; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.Language; import pcgen.core.PCTemplate; import pcgen.io.testsupport.AbstractSaveRestoreTest; import pcgen.persistence.PersistenceLayerException; import plugin.lsttokens.testsupport.TokenRegistration; public class GeneralSaveRestoreTest extends AbstractSaveRestoreTest { public void testTemplateFeat() { //Represents CODE-2547 TokenRegistration.register(new plugin.lsttokens.deprecated.TemplateFeatToken()); TokenRegistration.register(new plugin.lsttokens.ability.StackToken()); TokenRegistration.register(new plugin.exporttokens.deprecated.TemplateToken()); Language lang = context.getReferenceContext().constructCDOMObject(Language.class, "English"); Ability a = context.getReferenceContext().constructCDOMObject(Ability.class, "Ab"); context.getReferenceContext().reassociateCategory(AbilityCategory.FEAT, a); PCTemplate pct = context.getReferenceContext().constructCDOMObject(PCTemplate.class, "Templ"); try { assertTrue(context.processToken(a, "MULT", "YES")); assertTrue(context.processToken(a, "STACK", "YES")); assertTrue(context.processToken(a, "CHOOSE", "LANG|English")); assertTrue(context.processToken(a, "AUTO", "LANG|%LIST")); assertTrue(context.processToken(pct, "FEAT", "Ab")); } catch (PersistenceLayerException e) { fail (e.getMessage()); } finishLoad(); pc.addTemplate(pct); assertTrue(pc.hasLanguage(lang)); runRoundRobin(null); assertTrue(reloadedPC.hasLanguage(lang)); List<CNAbility> cnaList = pc.getMatchingCNAbilities(a); assertEquals(1, cnaList.size()); List<String> assocs = pc.getAssociationList(cnaList.get(0)); assertEquals(1, assocs.size()); assertEquals("English", assocs.get(0)); cnaList = reloadedPC.getMatchingCNAbilities(a); assertEquals(1, cnaList.size()); assocs = reloadedPC.getAssociationList(cnaList.get(0)); assertEquals(1, assocs.size()); assertEquals("English", assocs.get(0)); assertEquals("Ab(English)", ExportHandler.getTokenString(pc, "TEMPLATE.0.FEAT")); assertEquals("Ab(English)", ExportHandler.getTokenString(reloadedPC, "TEMPLATE.0.FEAT")); reloadedPC.removeTemplate(pct); assertFalse(reloadedPC.hasLanguage(lang)); } }