From 4c899a25bd3ee18dfde2ac085c46388812277f6a Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Mon, 22 Apr 2019 19:42:25 +0400 Subject: [PATCH] Test framework: added real time card type check (#4936); --- .../java/org/mage/test/player/TestPlayer.java | 26 +++++++++++++++++++ .../base/impl/CardTestPlayerAPIImpl.java | 6 +++++ .../common/TargetHasCardTypeCondition.java | 5 ---- .../main/java/mage/constants/CardType.java | 10 +++++++ Mage/src/main/java/mage/game/Game.java | 2 +- 5 files changed, 43 insertions(+), 6 deletions(-) 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 98ecad63af9..857864e987a 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 @@ -667,6 +667,13 @@ public class TestPlayer implements Player { wasProccessed = true; } + // check type: card name, type, must have + if (params[0].equals(CHECK_COMMAND_TYPE) && params.length == 4) { + assertType(action, game, computerPlayer, params[1], CardType.fromString(params[2]), Boolean.parseBoolean(params[3])); + actions.remove(action); + wasProccessed = true; + } + // check subtype: card name, subtype, must have if (params[0].equals(CHECK_COMMAND_SUBTYPE) && params.length == 4) { assertSubType(action, game, computerPlayer, params[1], SubType.fromString(params[2]), Boolean.parseBoolean(params[3])); @@ -994,6 +1001,25 @@ public class TestPlayer implements Player { } } + private void assertType(PlayerAction action, Game game, Player player, String permanentName, CardType type, boolean mustHave) { + + Permanent perm = findPermanentWithAssert(action, game, player, permanentName); + + boolean founded = false; + for (CardType ct : perm.getCardType()) { + if (ct.equals(type)) { + founded = true; + break; + } + } + + if (mustHave) { + Assert.assertEquals(action.getActionName() + " - permanent " + permanentName + " must have type " + type, true, founded); + } else { + Assert.assertEquals(action.getActionName() + " - permanent " + permanentName + " must have not type " + type, false, founded); + } + } + private void assertSubType(PlayerAction action, Game game, Player player, String permanentName, SubType subType, boolean mustHave) { Permanent perm = findPermanentWithAssert(action, game, player, permanentName); 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 9e47af7659c..c7ecc49a0a1 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 @@ -59,6 +59,7 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement public static final String CHECK_COMMAND_HAND_COUNT = "HAND_COUNT"; public static final String CHECK_COMMAND_HAND_CARD_COUNT = "HAND_CARD_COUNT"; public static final String CHECK_COMMAND_COLOR = "COLOR"; + public static final String CHECK_COMMAND_TYPE = "TYPE"; public static final String CHECK_COMMAND_SUBTYPE = "SUBTYPE"; public static final String CHECK_COMMAND_MANA_POOL = "MANA_POOL"; public static final String CHECK_COMMAND_ALIAS_ZONE = "ALIAS_ZONE"; @@ -326,6 +327,11 @@ public abstract class CardTestPlayerAPIImpl extends MageTestPlayerBase implement check(checkName, turnNum, step, player, CHECK_COMMAND_COLOR, permanentName, colors, mustHave.toString()); } + public void checkType(String checkName, int turnNum, PhaseStep step, TestPlayer player, String permanentName, CardType type, Boolean mustHave) { + //Assert.assertNotEquals("", permanentName); + check(checkName, turnNum, step, player, CHECK_COMMAND_TYPE, permanentName, type.toString(), mustHave.toString()); + } + public void checkSubType(String checkName, int turnNum, PhaseStep step, TestPlayer player, String permanentName, SubType subType, Boolean mustHave) { //Assert.assertNotEquals("", permanentName); check(checkName, turnNum, step, player, CHECK_COMMAND_SUBTYPE, permanentName, subType.toString(), mustHave.toString()); diff --git a/Mage/src/main/java/mage/abilities/condition/common/TargetHasCardTypeCondition.java b/Mage/src/main/java/mage/abilities/condition/common/TargetHasCardTypeCondition.java index d1f0bb30afe..67a02f25c06 100644 --- a/Mage/src/main/java/mage/abilities/condition/common/TargetHasCardTypeCondition.java +++ b/Mage/src/main/java/mage/abilities/condition/common/TargetHasCardTypeCondition.java @@ -1,8 +1,3 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ package mage.abilities.condition.common; import mage.MageObject; diff --git a/Mage/src/main/java/mage/constants/CardType.java b/Mage/src/main/java/mage/constants/CardType.java index d060f5aa041..54fb252ac50 100644 --- a/Mage/src/main/java/mage/constants/CardType.java +++ b/Mage/src/main/java/mage/constants/CardType.java @@ -31,6 +31,16 @@ public enum CardType { return text; } + public static CardType fromString(String value) { + for (CardType ct : CardType.values()) { + if (ct.toString().equals(value)) { + return ct; + } + } + + throw new IllegalArgumentException("Can't find card type enum value: " + value); + } + public boolean isPermanentType() { return permanentType; } diff --git a/Mage/src/main/java/mage/game/Game.java b/Mage/src/main/java/mage/game/Game.java index 4772323460b..17342a8fb72 100644 --- a/Mage/src/main/java/mage/game/Game.java +++ b/Mage/src/main/java/mage/game/Game.java @@ -134,7 +134,7 @@ public interface Game extends MageItem, Serializable { default boolean isActivePlayer(UUID playerId) { - return getActivePlayerId().equals(playerId); + return getActivePlayerId() != null && getActivePlayerId().equals(playerId); } /**