package org.mage.test.serverside.cards.abilities; import mage.constants.PhaseStep; import mage.constants.Zone; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author ayratn */ public class ProtectionFromColorTest extends CardTestPlayerBase { @Test public void testAgainstAbilityInTheStack() { addCard(Zone.BATTLEFIELD, playerA, "Royal Assassin"); // tapped White Knight with Protection from Black addCard(Zone.BATTLEFIELD, playerB, "White Knight", 1, true); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Destroy target tapped creature.", "White Knight"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); // no one should be destroyed assertPermanentCount(playerB, "White Knight", 1); } @Test public void testAgainstAbilityInTheStackNoProtection() { addCard(Zone.BATTLEFIELD, playerA, "Royal Assassin"); addCard(Zone.BATTLEFIELD, playerB, "Runeclaw Bear", 1, true); activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Destroy target tapped creature.", "Runeclaw Bear"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); // One should have been destroyed by Royal Assassin assertPermanentCount(playerB, "Runeclaw Bear", 0); } @Test public void testProtectionChosenColor() { addCard(Zone.BATTLEFIELD, playerA, "Plains"); addCard(Zone.BATTLEFIELD, playerA, "Swamp"); // Defender // As Order of the Stars enters the battlefield, choose a color. // Order of the Stars has protection from the chosen color. addCard(Zone.HAND, playerA, "Order of the Stars"); // 0/1 {W} // Put target creature card from a graveyard onto the battlefield under your control. You lose life equal to its converted mana cost. addCard(Zone.HAND, playerA, "Reanimate"); // {B} addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 4); // Seismic Shudder deals 1 damage to each creature without flying. addCard(Zone.HAND, playerB, "Seismic Shudder", 2); // {1}{R} castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Order of the Stars"); setChoice(playerA, "White"); attack(2, playerB, "Silvercoat Lion"); block(2, playerA, "Order of the Stars", "Silvercoat Lion"); castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerB, "Seismic Shudder"); castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Reanimate", "Order of the Stars"); setChoice(playerA, "Red"); castSpell(3, PhaseStep.POSTCOMBAT_MAIN, playerB, "Seismic Shudder"); setStopAt(3, PhaseStep.END_TURN); execute(); assertGraveyardCount(playerB, "Seismic Shudder", 2); assertGraveyardCount(playerA, "Reanimate", 1); assertPermanentCount(playerA, "Order of the Stars", 1); assertPermanentCount(playerB, "Silvercoat Lion", 1); assertLife(playerA, 19); assertLife(playerB, 20); } }