From 149635a9f1f4f8a915307c02fa0ca74c52c2708c Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 23 Aug 2020 11:36:01 +0200 Subject: [PATCH] * Added test for Propaganda. --- .../sacrifice/OptionalSacrificeTests.java | 92 ++++++++++--------- .../cards/replacement/PropagandaTest.java | 60 ++++++++++++ 2 files changed, 110 insertions(+), 42 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/replacement/PropagandaTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/OptionalSacrificeTests.java b/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/OptionalSacrificeTests.java index d40fb463b2..b7e9d6fa07 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/OptionalSacrificeTests.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/OptionalSacrificeTests.java @@ -12,14 +12,15 @@ import org.mage.test.serverside.base.CardTestPlayerBase; public class OptionalSacrificeTests extends CardTestPlayerBase { /** - * Glint Hawk - Flying 2/2 - {W} - * When Glint Hawk enters the battlefield, sacrifice it unless you return an artifact you control to its owner's hand. - * + * Glint Hawk - Flying 2/2 - {W} When Glint Hawk enters the battlefield, + * sacrifice it unless you return an artifact you control to its owner's + * hand. + * * Test returning controlled artifact. */ @Test public void testGlintHawkChooseArtifact() { - + addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); addCard(Zone.HAND, playerA, "Glint Hawk"); addCard(Zone.BATTLEFIELD, playerA, "Relic of Progenitus"); @@ -36,16 +37,17 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { assertHandCount(playerA, "Relic of Progenitus", 1); assertPermanentCount(playerA, "Relic of Progenitus", 0); } - + /** - * Glint Hawk - Flying 2/2 - {W} - * When Glint Hawk enters the battlefield, sacrifice it unless you return an artifact you control to its owner's hand. - * + * Glint Hawk - Flying 2/2 - {W} When Glint Hawk enters the battlefield, + * sacrifice it unless you return an artifact you control to its owner's + * hand. + * * Test opting not to choose an artifact controlled to sacrifice Glint Hawk. */ @Test public void testGlintHawkDoNotChooseArtifactControlled() { - + addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); addCard(Zone.HAND, playerA, "Glint Hawk"); addCard(Zone.BATTLEFIELD, playerA, "Relic of Progenitus"); @@ -61,16 +63,17 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { assertHandCount(playerA, "Relic of Progenitus", 0); assertPermanentCount(playerA, "Relic of Progenitus", 1); } - + /** - * Glint Hawk - Flying 2/2 - {W} - * When Glint Hawk enters the battlefield, sacrifice it unless you return an artifact you control to its owner's hand. - * + * Glint Hawk - Flying 2/2 - {W} When Glint Hawk enters the battlefield, + * sacrifice it unless you return an artifact you control to its owner's + * hand. + * * Test no artifacts to target - so Glint Hawk is sacrificed. */ @Test public void testGlintHawkNoArtifactControlled() { - + addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); addCard(Zone.HAND, playerA, "Glint Hawk"); @@ -82,17 +85,18 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { assertPermanentCount(playerA, "Glint Hawk", 0); assertGraveyardCount(playerA, "Glint Hawk", 1); - } + } /** - * Drake Familiar - Flying 2/1 - {1}{U} - * When Drake Familiar enters the battlefield, sacrifice it unless you return an enchantment to its owner's hand. - * + * Drake Familiar - Flying 2/1 - {1}{U} When Drake Familiar enters the + * battlefield, sacrifice it unless you return an enchantment to its owner's + * hand. + * * Test returning own enchantment so not sacrificed. */ @Test public void testDrakeFamiliarOwnEnchantment() { - + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); addCard(Zone.HAND, playerA, "Drake Familiar"); addCard(Zone.BATTLEFIELD, playerA, "Moat"); @@ -104,23 +108,25 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); - assertPermanentCount(playerA, "Drake Familiar", 1); - assertGraveyardCount(playerA, "Drake Familiar", 0); + assertPermanentCount(playerA, "Drake Familiar", 1); + assertGraveyardCount(playerA, "Drake Familiar", 0); assertHandCount(playerA, "Moat", 1); assertPermanentCount(playerA, "Moat", 0); } - + /** - * Drake Familiar - Flying 2/1 - {1}{U} - * When Drake Familiar enters the battlefield, sacrifice it unless you return an enchantment to its owner's hand. - * + * Drake Familiar - Flying 2/1 - {1}{U} When Drake Familiar enters the + * battlefield, sacrifice it unless you return an enchantment to its owner's + * hand. + * * Test returning opponent's enchantment so not sacrificed. */ @Test public void testDrakeFamiliarOpposingEnchantment() { - + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); addCard(Zone.HAND, playerA, "Drake Familiar"); + // Creatures can’t attack you unless their controller pays {2} for each creature they control that’s attacking you. addCard(Zone.BATTLEFIELD, playerB, "Propaganda"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Drake Familiar"); @@ -130,21 +136,22 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); - assertPermanentCount(playerA, "Drake Familiar", 1); - assertGraveyardCount(playerA, "Drake Familiar", 0); + assertPermanentCount(playerA, "Drake Familiar", 1); + assertGraveyardCount(playerA, "Drake Familiar", 0); assertHandCount(playerB, "Propaganda", 1); assertPermanentCount(playerB, "Propaganda", 0); } - + /** - * Drake Familiar - Flying 2/1 - {1}{U} - * When Drake Familiar enters the battlefield, sacrifice it unless you return an enchantment to its owner's hand. - * + * Drake Familiar - Flying 2/1 - {1}{U} When Drake Familiar enters the + * battlefield, sacrifice it unless you return an enchantment to its owner's + * hand. + * * Test when no enchantments are on battlefield, Drake is sacrificed. */ @Test public void testDrakeFamiliarNoEnchantmentControlled() { - + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); addCard(Zone.HAND, playerA, "Drake Familiar"); @@ -154,19 +161,20 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); - assertPermanentCount(playerA, "Drake Familiar", 0); + assertPermanentCount(playerA, "Drake Familiar", 0); assertGraveyardCount(playerA, "Drake Familiar", 1); } - + /** - * Drake Familiar - Flying 2/1 - {1}{U} - * When Drake Familiar enters the battlefield, sacrifice it unless you return an enchantment to its owner's hand. - * + * Drake Familiar - Flying 2/1 - {1}{U} When Drake Familiar enters the + * battlefield, sacrifice it unless you return an enchantment to its owner's + * hand. + * * Test when no enchantments are on battlefield, Drake is sacrificed. */ @Test public void testDrakeFamiliarDoNotChooseEnchantment() { - + addCard(Zone.BATTLEFIELD, playerA, "Island", 2); addCard(Zone.HAND, playerA, "Drake Familiar"); addCard(Zone.BATTLEFIELD, playerB, "Propaganda"); @@ -177,9 +185,9 @@ public class OptionalSacrificeTests extends CardTestPlayerBase { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); - assertPermanentCount(playerA, "Drake Familiar", 0); + assertPermanentCount(playerA, "Drake Familiar", 0); assertGraveyardCount(playerA, "Drake Familiar", 1); assertHandCount(playerB, "Propaganda", 0); assertPermanentCount(playerB, "Propaganda", 1); - } -} \ No newline at end of file + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/PropagandaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/PropagandaTest.java new file mode 100644 index 0000000000..867941e441 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/PropagandaTest.java @@ -0,0 +1,60 @@ +package org.mage.test.cards.replacement; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ +public class PropagandaTest extends CardTestPlayerBase { + + @Test + public void test_Propaganda1() { + setStrictChooseMode(true); + + // Creatures can’t attack you unless their controller pays {2} for each creature they control that’s attacking you. + addCard(Zone.BATTLEFIELD, playerA, "Propaganda"); + + addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion"); + addCard(Zone.BATTLEFIELD, playerB, "Plains", 2); + + attack(2, playerB, "Silvercoat Lion"); + setChoice(playerB, "Yes");// Pay {2} to attack? + + setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertLife(playerA, 18); + + assertTappedCount("Silvercoat Lion", true, 1); + assertTappedCount("Plains", true, 2); + } + + @Test + public void test_Propaganda2() { + setStrictChooseMode(true); + + // Creatures can’t attack you unless their controller pays {2} for each creature they control that’s attacking you. + addCard(Zone.BATTLEFIELD, playerA, "Propaganda", 2); + + addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion"); + addCard(Zone.BATTLEFIELD, playerB, "Plains", 4); + + attack(2, playerB, "Silvercoat Lion"); + setChoice(playerB, "Propaganda"); // Creatures can't attack you unless their controller pays {2} for each creature they control that's attacking you."); + setChoice(playerB, "Yes");// Pay {2} to attack? + setChoice(playerB, "Yes");// Pay {2} to attack? + + setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + assertLife(playerA, 18); + + assertTappedCount("Silvercoat Lion", true, 1); + assertTappedCount("Plains", true, 4); + } + +}