GUI: added restriction card icon to permanent (contains all applied restrictions and requirements, #7471)

This commit is contained in:
Oleg Agafonov 2023-12-03 00:01:47 +04:00
parent ebaa92c537
commit eaa510b265
7 changed files with 87 additions and 14 deletions

View file

@ -1,5 +1,7 @@
package org.mage.test.serverside;
import mage.abilities.hint.HintUtils;
import mage.abilities.icon.CardIconType;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.view.CardView;
@ -338,4 +340,46 @@ public class CardIconsTest extends CardTestPlayerBase {
setStopAt(1, PhaseStep.END_TURN);
execute();
}
@Test
public void test_RestrictionsIcon() {
// Felhide Brawler can't block unless you control another Minotaur.
addCard(Zone.BATTLEFIELD, playerA, "Felhide Brawler", 1);
//
addCard(Zone.HAND, playerA, "Felhide Brawler", 1); // {1}{B}
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
// active restriction
runCode("has restrictions", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> {
GameView gameView = getGameView(player);
PlayerView playerView = gameView.getPlayers().get(0);
Assert.assertEquals("player", player.getName(), playerView.getName());
CardView cardView = playerView.getBattlefield().values().stream().filter(p -> p.getName().equals("Felhide Brawler")).findFirst().orElse(null);
Assert.assertNotNull("must have 1 creature in battlefield", cardView);
Assert.assertTrue("creature must have restriction hint", cardView.getRules().stream().anyMatch(s -> s.startsWith(HintUtils.HINT_ICON_RESTRICT)));
Assert.assertTrue("creature must have restriction icon", cardView.getCardIcons().stream().anyMatch(icon -> icon.getIconType().equals(CardIconType.OTHER_HAS_RESTRICTIONS)));
});
// cast another creature and disable restriction
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Felhide Brawler");
waitStackResolved(1, PhaseStep.PRECOMBAT_MAIN);
runCode("no restrictions", 1, PhaseStep.PRECOMBAT_MAIN, playerA, (info, player, game) -> {
GameView gameView = getGameView(player);
PlayerView playerView = gameView.getPlayers().get(0);
Assert.assertEquals("player", player.getName(), playerView.getName());
Assert.assertEquals("must have 2 creature in battlefield", 2, playerView.getBattlefield().values()
.stream()
.filter(p -> p.getName().equals("Felhide Brawler"))
.count()
);
CardView cardView = playerView.getBattlefield().values().stream().filter(p -> p.getName().equals("Felhide Brawler")).findFirst().orElse(null);
Assert.assertNotNull("can't find creature", cardView);
Assert.assertFalse("creature must not have restriction hint", cardView.getRules().stream().anyMatch(s -> s.startsWith(HintUtils.HINT_ICON_RESTRICT)));
Assert.assertFalse("creature must not have restriction icon", cardView.getCardIcons().stream().anyMatch(icon -> icon.getIconType().equals(CardIconType.OTHER_HAS_RESTRICTIONS)));
});
setStrictChooseMode(true);
setStopAt(1, PhaseStep.END_TURN);
execute();
}
}