Add a test related to #3156

This commit is contained in:
friarsol
2023-08-19 22:30:07 -04:00
committed by Chris H
parent 0c1dd04bc1
commit b6bce14ba3
2 changed files with 46 additions and 1 deletions

View File

@@ -10,6 +10,8 @@ import forge.game.zone.ZoneType;
import org.testng.AssertJUnit; import org.testng.AssertJUnit;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.util.List;
public class AutoPaymentTest extends SimulationTest { public class AutoPaymentTest extends SimulationTest {
@@ -46,4 +48,37 @@ public class AutoPaymentTest extends SimulationTest {
Card elfCopy = findCardWithName(simGame, llanowar); Card elfCopy = findCardWithName(simGame, llanowar);
AssertJUnit.assertNotNull(elfCopy); AssertJUnit.assertNotNull(elfCopy);
} }
@Test
public void payWithTreasuresOverPhyrexianAltar() {
Game game = initAndCreateGame();
Player p = game.getPlayers().get(1);
String squire = "Squire";
List<Card> squires = addCards(squire, 6, p);
Card altar = addCard("Phyrexian Altar", p);
List<Card> 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);
}
} }

View File

@@ -1,5 +1,6 @@
package forge.ai.simulation; package forge.ai.simulation;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -160,6 +161,16 @@ public class SimulationTest {
return Card.fromPaperCard(token, p, p.getGame()); return Card.fromPaperCard(token, p, p.getGame());
} }
protected List<Card> addTokens(String name, int amount, Player p) {
List<Card> cards = new ArrayList<>();
for(int i = 0; i < amount; i++) {
cards.add(addToken(name, p));
}
return cards;
}
protected Card addToken(String name, Player p) { protected Card addToken(String name, Player p) {
Card c = createToken(name, p); Card c = createToken(name, p);
// card need a new Timestamp otherwise Static Abilities might collide // card need a new Timestamp otherwise Static Abilities might collide
@@ -167,5 +178,4 @@ public class SimulationTest {
p.getZone(ZoneType.Battlefield).add(c); p.getZone(ZoneType.Battlefield).add(c);
return c; return c;
} }
} }