diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SoulbondKeywordTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SoulbondKeywordTest.java index 7c8bffe3ca0..da56ac0540b 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SoulbondKeywordTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/SoulbondKeywordTest.java @@ -5,6 +5,8 @@ import mage.abilities.Abilities; import mage.abilities.AbilitiesImpl; import mage.abilities.keyword.LifelinkAbility; import mage.filter.Filter; +import mage.game.permanent.Permanent; +import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -352,17 +354,25 @@ public class SoulbondKeywordTest extends CardTestPlayerBase { @Test public void testExileAndReturnBack() { addCard(Constants.Zone.HAND, playerA, "Elite Vanguard"); + addCard(Constants.Zone.HAND, playerA, "Cloudshift"); addCard(Constants.Zone.BATTLEFIELD, playerA, "Trusted Forcemage"); addCard(Constants.Zone.BATTLEFIELD, playerA, "Plains", 2); castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Elite Vanguard"); + setChoice(playerA, "Yes"); castSpell(1, Constants.PhaseStep.POSTCOMBAT_MAIN, playerA, "Cloudshift", "Trusted Forcemage"); + setChoice(playerA, "No"); - setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + setStopAt(1, Constants.PhaseStep.END_TURN); execute(); assertPermanentCount(playerA, "Trusted Forcemage", 1); - assertPowerToughness(playerA, "Trusted Forcemage", 3, 3); - assertPowerToughness(playerA, "Elite Vanguard", 3, 2); + assertPowerToughness(playerA, "Trusted Forcemage", 2, 2); + assertPowerToughness(playerA, "Elite Vanguard", 2, 1); + + Permanent trustedForcemange = getPermanent("Trusted Forcemage", playerA.getId()); + Permanent eliteVanguard = getPermanent("Elite Vanguard", playerA.getId()); + Assert.assertTrue(trustedForcemange.getPairedCard() == null); + Assert.assertTrue(eliteVanguard.getPairedCard() == null); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index a18de6ce678..91973d3d5b7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -202,6 +202,21 @@ public class TestPlayer extends ComputerPlayer { } return super.choose(outcome, target, sourceId, game, options); } + + @Override + public boolean chooseUse(Constants.Outcome outcome, String message, Game game) { + if (!choices.isEmpty()) { + if (choices.get(0).equals("No")) { + choices.remove(0); + return false; + } + if (choices.get(0).equals("Yes")) { + choices.remove(0); + return true; + } + } + return true; + } protected Permanent findPermanent(FilterPermanent filter, UUID controllerId, Game game) { List permanents = game.getBattlefield().getAllActivePermanents(filter, controllerId, game); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 89badd282f1..daf03b4f2e0 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -861,7 +861,7 @@ public abstract class GameImpl> implements Game, Serializa //702.93e.: ...another player gains control // ...or the creature it's paired with leaves the battlefield. Permanent paired = getPermanent(perm.getPairedCard()); - if (paired == null || !perm.getControllerId().equals(paired.getControllerId())) { + if (paired == null || !perm.getControllerId().equals(paired.getControllerId()) || paired.getPairedCard() == null) { perm.setPairedCard(null); if (paired != null) { paired.setPairedCard(null);