diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/lrw/AshlingThePilgrimTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/lrw/AshlingThePilgrimTest.java index ba25535c3a..7dfb3c0c5c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/lrw/AshlingThePilgrimTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/lrw/AshlingThePilgrimTest.java @@ -1,5 +1,7 @@ package org.mage.test.cards.single.lrw; +import mage.abilities.keyword.TrampleAbility; +import mage.constants.ManaType; import mage.constants.PhaseStep; import mage.constants.Zone; import mage.counters.CounterType; @@ -15,6 +17,11 @@ public class AshlingThePilgrimTest extends CardTestPlayerBase { private static final String ashling = "Ashling the Pilgrim"; private static final String ashAbility = "{1}{R}: "; private static final String cshift = "Cloudshift"; + private static final String slbrt = "Soulbright Flamekin"; + private static final String slbrtAbility = "{2}: "; + private static final String sqlch = "Squelch"; + private static final String crps = "Walking Corpse"; + private static final String mrdr = "Murder"; @Test public void testAshling() { @@ -115,4 +122,89 @@ public class AshlingThePilgrimTest extends CardTestPlayerBase { assertPermanentCount(playerA, ashling, 0); assertLife(playerA, 17); } + + @Test + public void testAshlingExtraActivations() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 10); + addCard(Zone.BATTLEFIELD, playerA, ashling); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertAllCommandsUsed(); + assertPermanentCount(playerA, ashling, 0); + assertLife(playerA, 17); + } + + @Test + public void testAshlingSoulbright() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 6); + addCard(Zone.BATTLEFIELD, playerA, ashling); + addCard(Zone.BATTLEFIELD, playerA, slbrt); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, ashling); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, ashling); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, ashling); + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertAllCommandsUsed(); + assertPermanentCount(playerA, ashling, 0); + assertPermanentCount(playerA, slbrt, 0); + assertLife(playerA, 17); + } + + @Test + public void testAshlingStifle() { + addCard(Zone.BATTLEFIELD, playerA, "Volcanic Island", 8); + addCard(Zone.BATTLEFIELD, playerA, ashling); + addCard(Zone.HAND, playerA, sqlch); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, ashAbility); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, sqlch); + activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, ashAbility); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertAllCommandsUsed(); + assertPermanentCount(playerA, ashling, 1); + assertCounterCount(playerA, ashling, CounterType.P1P1, 2); + assertLife(playerA, 20); + } + + @Test + public void testSoulbrightFizzle() { + addCard(Zone.BATTLEFIELD, playerA, "Badlands", 9); + addCard(Zone.BATTLEFIELD, playerA, "Upwelling"); + addCard(Zone.BATTLEFIELD, playerA, crps); + addCard(Zone.BATTLEFIELD, playerA, slbrt); + addCard(Zone.HAND, playerA, mrdr); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, crps); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, mrdr, crps); + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, slbrt); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, slbrtAbility, slbrt); + waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN); + + setStopAt(1, PhaseStep.PRECOMBAT_MAIN); + execute(); + + assertAllCommandsUsed(); + assertManaPool(playerA, ManaType.RED, 0); + assertAbility(playerA, slbrt, TrampleAbility.getInstance(), true); + } }