From 7155977cd2dbacbdc18afd169706c24c4c89b933 Mon Sep 17 00:00:00 2001 From: John Gray Date: Sun, 21 Jul 2019 22:26:11 -0400 Subject: [PATCH] add aether gust unit tests + fix issue #5902 --- .../test/cards/single/AetherGustTest.java | 72 +++++++++++++++++++ .../common/PutOnLibraryTargetEffect.java | 11 ++- 2 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/AetherGustTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/AetherGustTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/AetherGustTest.java new file mode 100644 index 00000000000..e0322d58d41 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/AetherGustTest.java @@ -0,0 +1,72 @@ + + +package org.mage.test.cards.single; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author jgray1206 + */ + +public class AetherGustTest extends CardTestPlayerBase { + + /* Aether Gust - Instant {1}{U} + * Choose target spell or permanent that’s red or green. Its owner puts it on the top or bottom of their library. + */ + String aetherGust = "Aether Gust"; + + /** + * Issue #5902: + * Aether Gust is not putting spells back into the owner's library. + */ + @Test + public void testAetherGustWorksWithSpells() { + String barkhide = "Barkhide Troll"; //Arbitrary creature {G}{G} + + removeAllCardsFromLibrary(playerA); + addCard(Zone.BATTLEFIELD, playerA, "Island", 3); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 3); + addCard(Zone.HAND, playerA, barkhide); + addCard(Zone.HAND, playerA, aetherGust); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, barkhide); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, aetherGust); + setChoice(playerA, barkhide); + setChoice(playerA, "Top"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertGraveyardCount(playerA, aetherGust, 1); + assertPermanentCount(playerA, barkhide, 0); + assertLibraryCount(playerA, 1); + } + + @Test + public void testAetherGustWorksWithPermanents() { + String barkhide = "Barkhide Troll"; //Arbitrary creature {G}{G} + + removeAllCardsFromLibrary(playerA); + addCard(Zone.BATTLEFIELD, playerA, "Island", 3); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 3); + addCard(Zone.HAND, playerA, barkhide); + addCard(Zone.HAND, playerA, aetherGust); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, barkhide); + castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, aetherGust); + setChoice(playerA, barkhide); + setChoice(playerA, "Top"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertGraveyardCount(playerA, aetherGust, 1); + assertPermanentCount(playerA, barkhide, 0); + assertLibraryCount(playerA, 1); + } + +} diff --git a/Mage/src/main/java/mage/abilities/effects/common/PutOnLibraryTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/PutOnLibraryTargetEffect.java index ff8475399f5..8f1455f2ab2 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/PutOnLibraryTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/PutOnLibraryTargetEffect.java @@ -62,10 +62,15 @@ public class PutOnLibraryTargetEffect extends OneShotEffect { } break; case GRAVEYARD: + Card graveyardCard = game.getCard(targetId); + if (graveyardCard != null) { + cards.add(graveyardCard); + } + break; case STACK: - Card card = game.getCard(targetId); - if (card != null) { - cards.add(card); + Card stackSpellCard = game.getSpell(targetId).getCard(); + if (stackSpellCard != null) { + cards.add(stackSpellCard); } break; }