package org.mage.test.cards.continuous;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.Card;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
* Wonder As long as Wonder is in your graveyard and you control an Island,
* creatures you control have flying.
*
* @author magenoxx_at_gmail.com
*/
public class WonderTest extends CardTestPlayerBase {
/**
* Tests creatures for Flying gained from Wonder ability when all conditions
* were met
*/
@Test
public void testCardWithAllConditionsMet() {
addCard(Zone.GRAVEYARD, playerA, "Wonder");
addCard(Zone.GRAVEYARD, playerA, "Runeclaw Bear");
addCard(Zone.BATTLEFIELD, playerA, "Island");
addCard(Zone.BATTLEFIELD, playerA, "Elite Vanguard");
addCard(Zone.BATTLEFIELD, playerA, "Corpse Traders");
addCard(Zone.BATTLEFIELD, playerB, "Llanowar Elves");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), true);
assertAbility(playerA, "Corpse Traders", FlyingAbility.getInstance(), true);
assertAbility(playerB, "Llanowar Elves", FlyingAbility.getInstance(), false);
// check no flying in graveyard
for (Card card : playerA.getGraveyard().getCards(currentGame)) {
if (card.getName().equals("Runeclaw Bear")) {
Assert.assertFalse(card.getAbilities().contains(FlyingAbility.getInstance()));
}
}
}
@Test
public void testNoIsland() {
addCard(Zone.GRAVEYARD, playerA, "Wonder");
addCard(Zone.BATTLEFIELD, playerA, "Forest");
addCard(Zone.BATTLEFIELD, playerA, "Mountain");
addCard(Zone.BATTLEFIELD, playerA, "Plains");
addCard(Zone.BATTLEFIELD, playerA, "Swamp");
addCard(Zone.BATTLEFIELD, playerA, "Elite Vanguard");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false);
}
@Test
public void testOtherZones() {
addCard(Zone.BATTLEFIELD, playerA, "Wonder");
addCard(Zone.HAND, playerA, "Wonder");
addCard(Zone.LIBRARY, playerA, "Wonder");
addCard(Zone.BATTLEFIELD, playerA, "Island");
addCard(Zone.BATTLEFIELD, playerA, "Elite Vanguard");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false);
}
@Test
public void testDestroyIsland() {
addCard(Zone.GRAVEYARD, playerA, "Wonder");
addCard(Zone.BATTLEFIELD, playerA, "Island");
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 4);
addCard(Zone.BATTLEFIELD, playerA, "Elite Vanguard");
addCard(Zone.HAND, playerA, "Demolish");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Demolish", "Island");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertAbility(playerA, "Elite Vanguard", FlyingAbility.getInstance(), false);
}
}