package data.xml.cards.p;

import org.magicnexus.classes.data.ActivatedAbilityData;
import org.magicnexus.classes.data.cost.ManaCostData;
import org.magicnexus.classes.data.cost.SelfTappingCostData;
import org.magicnexus.classes.data.effect.AddManaEffectData;
import org.magicnexus.interfaces.EManaSymbol;
import org.magicnexus.interfaces.ESubtype;
import org.magicnexus.interfaces.EType;

import data.xml.cards.AbstractCardTestCase;


public class PlateauTest extends AbstractCardTestCase
{
	
	@Override
	public String getCardName()
	{
		return "plateau";
	}
	
	@Override
	public void testName()
	{
		assertEquals("Plateau", getCard().getName());
	}
	
	@Override
	public void testSurtypes()
	{
		assertEmpty(getCard().getSurtypes());
	}
	
	@Override
	public void testTypes()
	{
		assertContains(getCard().getTypes(), EType.LAND);
	}
	
	@Override
	public void testSubtypes()
	{
		assertContains(getCard().getSubtypes(), ESubtype.PLAINS);
		assertContains(getCard().getSubtypes(), ESubtype.MOUNTAIN);
	}
	
	@Override
	public void testManaCost()
	{
		assertEquals(new ManaCostData(), getCard().getManaCost());
	}
	
	@Override
	public void testPower()
	{
		assertNull(getCard().getPower());
	}
	
	@Override
	public void testToughness()
	{
		assertNull(getCard().getToughness());
	}
	
	@Override
	public void testLoyalty()
	{
		assertNull(getCard().getLoyalty());
	}
	
	@Override
	public void testRulesText()
	{
		assertEquals("{T}: Add {R} or {W} to your mana pool.", getCard().getRulesText());
	}
	
	@Override
	public void testActivatedAbilities()
	{
		ActivatedAbilityData activatedAbility = new ActivatedAbilityData();
		SelfTappingCostData cost = new SelfTappingCostData();
		activatedAbility.add(cost);
		AddManaEffectData effect = new AddManaEffectData();
		effect.add(EManaSymbol.W);
		activatedAbility.add(effect);
		
		assertContains(getCard().getActivatedAbilities(), activatedAbility);
		
		activatedAbility = new ActivatedAbilityData();
		activatedAbility.add(cost);
		effect = new AddManaEffectData();
		effect.add(EManaSymbol.R);
		activatedAbility.add(effect);
		
		assertContains(getCard().getActivatedAbilities(), activatedAbility);
	}
	
	@Override
	public void testTriggeredAbilities()
	{
		assertEmpty(getCard().getTriggeredAbilities());
	}
	
	@Override
	public void testStaticAbilities()
	{
		assertEmpty(getCard().getStaticAbilities());
	}
	
	@Override
	public void testSpellAbilities()
	{
		assertEmpty(getCard().getSpellAbilities());
	}
	
	@Override
	public void testAlternateCosts()
	{
		assertEmpty(getCard().getAlternateCosts());
	}
	
}
