diff --git a/forge-gui-desktop/src/test/java/forge/ai/controller/AutoPaymentTest.java b/forge-gui-desktop/src/test/java/forge/ai/controller/AutoPaymentTest.java index 7b075193f2a..f3ab5a372a3 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/controller/AutoPaymentTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/controller/AutoPaymentTest.java @@ -10,6 +10,8 @@ import forge.game.zone.ZoneType; import org.testng.AssertJUnit; import org.testng.annotations.Test; +import java.util.List; + public class AutoPaymentTest extends SimulationTest { @@ -46,4 +48,37 @@ public class AutoPaymentTest extends SimulationTest { Card elfCopy = findCardWithName(simGame, llanowar); AssertJUnit.assertNotNull(elfCopy); } + + @Test + public void payWithTreasuresOverPhyrexianAltar() { + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + + String squire = "Squire"; + + List squires = addCards(squire, 6, p); + Card altar = addCard("Phyrexian Altar", p); + List treasures = addTokens("c_a_treasure_sac", 6, p); + + String shivan = "Shivan Dragon"; + Card dragon = addCardToZone(shivan, p, ZoneType.Hand); + + game.getPhaseHandler().devModeSet(PhaseType.MAIN1, p); + game.getAction().checkStateEffects(true); + + GameSimulator sim = createSimulator(game, p); + int score = sim.simulateSpellAbility(dragon.getFirstSpellAbility()).value; + + AssertJUnit.assertTrue(score > 0); + Game simGame = sim.getSimulatedGameState(); + + Card dragonBF = findCardWithName(simGame, shivan); + AssertJUnit.assertNotNull(dragonBF); + + Card squireCopy = findCardWithName(simGame, squire); + AssertJUnit.assertNotNull(squireCopy); + + Card treasureCopy = findCardWithName(simGame, "Treasure Token"); + AssertJUnit.assertNull(treasureCopy); + } } diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/SimulationTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/SimulationTest.java index 057a1daaa88..6da9dc91e23 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/SimulationTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/SimulationTest.java @@ -1,5 +1,6 @@ package forge.ai.simulation; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -160,6 +161,16 @@ public class SimulationTest { return Card.fromPaperCard(token, p, p.getGame()); } + protected List addTokens(String name, int amount, Player p) { + List cards = new ArrayList<>(); + + for(int i = 0; i < amount; i++) { + cards.add(addToken(name, p)); + } + + return cards; + } + protected Card addToken(String name, Player p) { Card c = createToken(name, p); // card need a new Timestamp otherwise Static Abilities might collide @@ -167,5 +178,4 @@ public class SimulationTest { p.getZone(ZoneType.Battlefield).add(c); return c; } - }