package org.mage.test.cards.conditional.twofaced; import mage.constants.PhaseStep; import mage.constants.Zone; import mage.filter.Filter; import mage.game.permanent.Permanent; import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; /** * @author noxx */ public class TwoFacedCardEffectsTest extends CardTestPlayerBase { /** * Tests that effects disappears when card gets transformed */ @Test public void testEffectTurnedOffOnTransform() { // Other Human creatures you control get +1/+1. // At the beginning of each upkeep, if no spells were cast last turn, transform Mayor of Avabruck. // Howlpack Alpha (transformed side) ---------------- // Each other creature you control that's a Werewolf or a Wolf gets +1/+1. // At the beginning of your end step, put a 2/2 green Wolf creature token onto the battlefield. // At the beginning of each upkeep, if a player cast two or more spells last turn, transform Howlpack Alpha. addCard(Zone.BATTLEFIELD, playerA, "Mayor of Avabruck"); addCard(Zone.BATTLEFIELD, playerA, "Wolfir Avenger"); addCard(Zone.BATTLEFIELD, playerA, "Elite Inquisitor"); setStopAt(2, PhaseStep.BEGIN_COMBAT); execute(); // check was transformed assertPermanentCount(playerA, "Howlpack Alpha", 1); // check new effect works assertPowerToughness(playerA, "Wolfir Avenger", 4, 4, Filter.ComparisonScope.Any); // check old effect doesn't work Permanent eliteInquisitor = getPermanent("Elite Inquisitor", playerA.getId()); Assert.assertEquals(2, eliteInquisitor.getPower().getValue()); Assert.assertEquals(2, eliteInquisitor.getToughness().getValue()); } /** * Tests copying card with transform */ @Test public void testCopyCardWithTransform() { addCard(Zone.BATTLEFIELD, playerA, "Forest", 2); addCard(Zone.HAND, playerA, "Mayor of Avabruck"); addCard(Zone.BATTLEFIELD, playerB, "Island", 4); addCard(Zone.HAND, playerB, "Clone"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Mayor of Avabruck"); castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Clone"); setStopAt(2, PhaseStep.BEGIN_COMBAT); execute(); assertHandCount(playerA, 0); assertHandCount(playerB, 1); assertPermanentCount(playerA, "Mayor of Avabruck", 1); assertPermanentCount(playerB, "Mayor of Avabruck", 1); } /** * Tests copied card should NOT be possible to transform */ @Test public void testCopyCantTransform() { addCard(Zone.BATTLEFIELD, playerA, "Forest", 2); addCard(Zone.HAND, playerA, "Mayor of Avabruck"); addCard(Zone.BATTLEFIELD, playerB, "Island", 4); addCard(Zone.HAND, playerB, "Clone"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Mayor of Avabruck"); castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Clone"); setStopAt(5, PhaseStep.BEGIN_COMBAT); execute(); assertHandCount(playerA, 2); assertHandCount(playerB, 2); // should transform - original assertPermanentCount(playerA, "Howlpack Alpha", 1); // should not transform - copy assertPermanentCount(playerB, "Mayor of Avabruck", 1); } /** * Tests copying already transformed card */ @Test public void testCopyAlreadyTransformedCard() { addCard(Zone.BATTLEFIELD, playerA, "Mayor of Avabruck"); addCard(Zone.BATTLEFIELD, playerB, "Island", 4); addCard(Zone.HAND, playerB, "Clone"); // copy already transformed castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Clone"); playerB.addChoice("Howlpack Alpha"); setStopAt(2, PhaseStep.BEGIN_COMBAT); execute(); assertHandCount(playerA, 0); assertHandCount(playerB, 1); // should transform - original assertPermanentCount(playerA, "Howlpack Alpha", 1); // check copying card is also transformed assertPermanentCount(playerB, "Howlpack Alpha", 1); } /** * Tests that triggered abilities of the frontside do not trigger if the card is transformed * */ @Test public void testTransformedDOesNotTriggerFrontsideAbilities() { addCard(Zone.BATTLEFIELD, playerA, "Loyal Cathar"); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1); addCard(Zone.HAND, playerB, "Lightning Bolt",2); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Loyal Cathar"); castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Unhallowed Cathar"); setStopAt(3, PhaseStep.PRECOMBAT_MAIN); execute(); assertGraveyardCount(playerB, "Lightning Bolt", 2); assertPermanentCount(playerA, "Unhallowed Cathar", 0); assertGraveyardCount(playerA, "Loyal Cathar", 1); } }