diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java deleted file mode 100644 index 1efc24b997..0000000000 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.mage.test.cards.abilities.oneshot.sacrifice; - -import mage.constants.PhaseStep; -import mage.constants.Zone; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestPlayerBase; - -/** - * @author noxx - */ -public class GethsVerdictTest extends CardTestPlayerBase { - - /** - * Checks that pro black can still be sacrificed - */ - @Test - public void testVersusProtectionFromBlack() { - addCard(Zone.BATTLEFIELD, playerA, "Swamp"); - addCard(Zone.BATTLEFIELD, playerA, "Swamp"); - addCard(Zone.HAND, playerA, "Geth's Verdict"); - addCard(Zone.BATTLEFIELD, playerB, "White Knight"); - - castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Geth's Verdict"); - setStopAt(1, PhaseStep.BEGIN_COMBAT); - execute(); - - assertPermanentCount(playerB, "White Knight", 0); - assertLife(playerB, 19); - } -} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/ProtectionSacrificeTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/ProtectionSacrificeTest.java new file mode 100644 index 0000000000..b5a5f581d7 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/ProtectionSacrificeTest.java @@ -0,0 +1,105 @@ +package org.mage.test.cards.abilities.oneshot.sacrifice; + +import mage.abilities.keyword.ShroudAbility; +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author noxx + */ +public class ProtectionSacrificeTest extends CardTestPlayerBase { + + /** + * Checks that pro black can still be sacrificed (i.e. Geth's Verdict) + */ + @Test + public void gethVerdictVersusProtectionFromBlack() { + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2); + addCard(Zone.HAND, playerA, "Geth's Verdict"); // {B}{B} target player sacrifices a creature and loses a life + addCard(Zone.BATTLEFIELD, playerB, "White Knight"); // {W}{W} pro-black + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Geth's Verdict", playerB); + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerB, "White Knight", 0); + assertLife(playerB, 19); + } + + /* + * NOTE: Test is failing due to bug in code. + * Reported bug: see issue #3332. + * Martyr's Bond fails to force sacrifice against Shroud/protection + */ + @Test + public void martyrBondVersusProtectionFromWhite() { + + /* + Martyr's Bond {4}{W}{W} + Enchantment + Whenever Martyr's Bond or another nonland permanent you control is put into a graveyard from the battlefield, each opponent sacrifices a permanent that shares a card type with it. + */ + String mBond = "Martyr's Bond"; + String bGnomes = "Bottle Gnomes"; // {3} 1/3 sac: gain 3 life + String sbDragon = "Stormbreath Dragon"; // {3}{R}{R} 4/4 Flying haste pro-white + + addCard(Zone.BATTLEFIELD, playerA, mBond); + addCard(Zone.BATTLEFIELD, playerA, bGnomes); + addCard(Zone.BATTLEFIELD, playerB, sbDragon); + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice"); // sac gnomes to trigger bond and force dragon to be sac'd + //setChoice(playerB, sbDragon); + //addTarget(playerB, sbDragon); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 23); + assertLife(playerB, 20); + assertGraveyardCount(playerA, bGnomes, 1); + assertPermanentCount(playerA, mBond,1); + assertPermanentCount(playerB, sbDragon, 0); + assertGraveyardCount(playerB, sbDragon, 1); + } + + /* + * Reported bug: see issue #3332 + * Martyr's Bond fails to force sacrifice against Shroud/protection + */ + @Test + public void martyrBondVersusShroud() { + + /* + Martyr's Bond {4}{W}{W} + Enchantment + Whenever Martyr's Bond or another nonland permanent you control is put into a graveyard from the battlefield, each opponent sacrifices a permanent that shares a card type with it. + */ + String mBond = "Martyr's Bond"; + String sTribeElder = "Sakura-Tribe Elder"; // {1}{G} 1/1 Sacrifice himself: get basic tapped into play + String sbDragon = "Stormbreath Dragon"; // {3}{R}{R} 4/4 Flying haste pro-white + String wCloak = "Whispersilk Cloak"; // {3} Equip {2} : Equipped creature can't be blocked and has shroud. + + addCard(Zone.BATTLEFIELD, playerA, mBond); + addCard(Zone.BATTLEFIELD, playerA, sTribeElder); + addCard(Zone.LIBRARY, playerA, "Forest", 10); + addCard(Zone.BATTLEFIELD, playerB, sbDragon); + addCard(Zone.BATTLEFIELD, playerB, wCloak); + addCard(Zone.BATTLEFIELD, playerB, "Wastes", 2); + + activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Equip", sbDragon); // gives Dragon shroud + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Sacrifice"); // sac elder + //setChoice(playerB, sbDragon); + //addTarget(playerB, sbDragon); + + setStopAt(3, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerA, sTribeElder, 1); + assertPermanentCount(playerA, mBond,1); + assertPermanentCount(playerB, wCloak, 1); + assertAbility(playerB, sbDragon, ShroudAbility.getInstance(), true); + assertPermanentCount(playerB, sbDragon, 0); + assertGraveyardCount(playerB, sbDragon, 1); + } +}