diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java index 0b2fee3f093..c5ba2b18efd 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer6.java @@ -27,9 +27,6 @@ */ package mage.player.ai; -import mage.constants.Outcome; -import mage.constants.PhaseStep; -import mage.constants.RangeOfInfluence; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.SpellAbility; @@ -40,6 +37,9 @@ import mage.abilities.keyword.*; import mage.cards.Card; import mage.cards.Cards; import mage.choices.Choice; +import mage.constants.Outcome; +import mage.constants.PhaseStep; +import mage.constants.RangeOfInfluence; import mage.game.Game; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; @@ -52,6 +52,7 @@ import mage.player.ai.ma.optimizers.TreeOptimizer; import mage.player.ai.ma.optimizers.impl.DiscardCardOptimizer; import mage.player.ai.ma.optimizers.impl.EquipOptimizer; import mage.player.ai.ma.optimizers.impl.LevelUpOptimizer; +import mage.player.ai.ma.optimizers.impl.OutcomeOptimizer; import mage.player.ai.util.CombatInfo; import mage.player.ai.util.CombatUtil; import mage.players.Player; @@ -62,7 +63,6 @@ import mage.target.Targets; import java.io.File; import java.util.*; import java.util.concurrent.*; -import mage.player.ai.ma.optimizers.impl.OutcomeOptimizer; /** * @@ -1364,6 +1364,11 @@ public class ComputerPlayer6 extends ComputerPlayer implements Player { } } + @Override + public int getActionCount() { + return suggested.size(); + } + protected String listTargets(Game game, Targets targets) { StringBuilder sb = new StringBuilder(); if (targets != null) { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/PersistTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/PersistTest.java index beaef32b615..2461c00f1dc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/PersistTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/PersistTest.java @@ -91,5 +91,4 @@ public class PersistTest extends CardTestPlayerBase { } // some tests were moved to LastKnownInformationTest - } diff --git a/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java b/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java index 33d4055c6e2..7fbd4a4f1c9 100644 --- a/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java @@ -51,6 +51,7 @@ public class LastKnownInformationTest extends CardTestPlayerBase { setStopAt(1, PhaseStep.END_TURN); execute(); + assertActionCount(playerB, 0); assertPermanentCount(playerA, "Safehold Elite", 1); assertPowerToughness(playerA, "Safehold Elite", 1, 1); // because enchanted Safehold Elite's P/T was 2/2, Murder Investigation has to put 2 Soldier onto the battlefield 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 c17a6fef77c..18fec992c57 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 @@ -85,6 +85,11 @@ public class TestPlayer extends ComputerPlayer { actions.add(new PlayerAction(turnNum, step, action)); } + @Override + public int getActionCount() { + return actions.size(); + } + public void addChoice(String choice) { choices.add(choice); } @@ -366,7 +371,7 @@ public class TestPlayer extends ComputerPlayer { if (groups.length > 2 && groups[2].startsWith("spellOnStack=")) { String spellOnStack = groups[2].substring(13); for (StackObject stackObject: game.getStack()) { - if (stackObject.getStackAbility().toString().indexOf(spellOnStack) >= 0) { + if (stackObject.getStackAbility().toString().contains(spellOnStack)) { return true; } } @@ -374,7 +379,7 @@ public class TestPlayer extends ComputerPlayer { } else if (groups.length > 2 && groups[2].startsWith("!spellOnStack=")) { String spellNotOnStack = groups[2].substring(14); for (StackObject stackObject: game.getStack()) { - if (stackObject.getStackAbility().toString().equals(spellNotOnStack)) { + if (stackObject.getStackAbility().toString().contains(spellNotOnStack)) { return false; } } @@ -388,7 +393,7 @@ public class TestPlayer extends ComputerPlayer { String spellOnTopOFStack = groups[2].substring(18); if (game.getStack().size() > 0) { StackObject stackObject = game.getStack().getFirst(); - if (stackObject != null && stackObject.getStackAbility().toString().indexOf(spellOnTopOFStack) >= 0) { + if (stackObject != null && stackObject.getStackAbility().toString().contains(spellOnTopOFStack)) { return true; } } diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java index 324667d336d..c539d4e9dd8 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/impl/CardTestPlayerAPIImpl.java @@ -621,6 +621,15 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement Assert.assertEquals("(Graveyard) Card counts are not equal (" + cardName + ")", count, actualCount); } + /** + * Asserts added actions count. Usefull to make sure that all actions were executed. + * @param player + * @param count + */ + public void assertActionCount(TestPlayer player, int count) { + Assert.assertEquals("Actions left are not equal: ", count, player.getActionCount()); + } + public Permanent getPermanent(String cardName, Player player) { return getPermanent(cardName, player.getId()); } diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index 99c407056cd..0cbbabf86de 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -204,6 +204,7 @@ public interface Player extends MageItem, Copyable { boolean isTestMode(); void setTestMode(boolean value); void addAction(String action); + int getActionCount(); void setAllowBadMoves(boolean allowBadMoves); void init(Game game); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index e2c00526dc6..ad6df2834a5 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -2220,6 +2220,11 @@ public abstract class PlayerImpl implements Player, Serializable { // do nothing } + @Override + public int getActionCount() { + return 0; + } + @Override public void setAllowBadMoves(boolean allowBadMoves) { // do nothing