/*
* Copyright (c) 2010 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.qualifier.ability;
import java.net.URISyntaxException;
import pcgen.cdom.base.CDOMObject;
import pcgen.cdom.content.CNAbilityFactory;
import pcgen.cdom.enumeration.Nature;
import pcgen.core.Ability;
import pcgen.core.AbilityCategory;
import pcgen.persistence.PersistenceLayerException;
import pcgen.rules.context.LoadContext;
import pcgen.rules.persistence.token.CDOMSecondaryToken;
import pcgen.rules.persistence.token.QualifierToken;
import plugin.lsttokens.choose.AbilityToken;
import plugin.lsttokens.testsupport.AbstractPCQualifierTokenTestCase;
import plugin.lsttokens.testsupport.TokenRegistration;
import plugin.lsttokens.testsupport.TransparentPlayerCharacter;
public class PCQualifierTokenTest extends
AbstractPCQualifierTokenTestCase<Ability>
{
static AbilityToken subtoken = new AbilityToken();
private static final plugin.qualifier.ability.PCToken PC_TOKEN =
new plugin.qualifier.ability.PCToken();
@Override
public void setUp() throws PersistenceLayerException, URISyntaxException
{
super.setUp();
TokenRegistration.register(PC_TOKEN);
}
@Override
public CDOMSecondaryToken<?> getSubToken()
{
return subtoken;
}
@Override
public Class<Ability> getTargetClass()
{
return Ability.class;
}
@Override
protected boolean allowsNotQualifier()
{
return true;
}
@Override
protected boolean typeAllowsMult()
{
return true;
}
@Override
protected void addToPCSet(TransparentPlayerCharacter pc, Ability item)
{
pc.abilitySet.add(CNAbilityFactory.getCNAbility(AbilityCategory.FEAT,
Nature.NORMAL, item));
}
@Override
protected Class<? extends QualifierToken<?>> getQualifierClass()
{
return plugin.qualifier.ability.PCToken.class;
}
@Override
public String getSubTokenName()
{
return "ABILITY|FEAT";
}
@Override
protected void setUpPC() throws PersistenceLayerException
{
super.setUpPC();
construct(primaryContext, "Goo");
construct(secondaryContext, "Goo");
}
@Override
protected CDOMObject construct(LoadContext loadContext, String one)
{
Ability a = (Ability) super.construct(loadContext, one);
loadContext.getReferenceContext().reassociateCategory(
AbilityCategory.FEAT, a);
return a;
}
@Override
protected CDOMObject construct(LoadContext loadContext,
Class<? extends CDOMObject> cl, String one)
{
Ability a = (Ability) super.construct(loadContext, cl, one);
loadContext.getReferenceContext().reassociateCategory(
AbilityCategory.FEAT, a);
return a;
}
}