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; }