LovecaSim / engine /tests /cards /batches /test_verification_batch_26.py
trioskosmos's picture
Upload folder using huggingface_hub
bb3fbf9 verified
import pytest
from engine.game.enums import Phase
from engine.game.game_state import initialize_game
class TestVerificationBatch26:
@pytest.fixture
def game_state(self):
gs = initialize_game(use_real_data=True)
if not gs.member_db:
pytest.skip("Card data not loaded")
gs.active_player.tapped_energy.fill(False)
return gs
def get_card_id(self, gs, card_no):
for cid, card in gs.member_db.items():
if card.card_no == card_no:
return cid
for cid, card in gs.live_db.items():
if card.card_no == card_no:
return cid
pytest.fail(f"Card {card_no} not found")
def test_pln_bp4_005_p_smoke(self, game_state):
gs = game_state
card_id = self.get_card_id(gs, "PL!N-bp4-005-P")
p1 = gs.players[0]
p2 = gs.players[1]
fodder_id = self.get_card_id(gs, "PL!-sd1-001-SD")
p1.hand = [card_id, fodder_id]
target_id = self.get_card_id(gs, "PL!-sd1-001-SD")
gs.member_db[target_id].cost = 4
p2.stage[0] = target_id
p2.stage[1] = target_id
p2.tapped_members[0] = False
p2.tapped_members[1] = False
gs.current_player = 0
gs.phase = Phase.MAIN
gs.step(1, check_legality=False, in_place=True) # Play
if gs.pending_choices:
gs.step(500, check_legality=False, in_place=True) # Discard fodder
if gs.pending_choices:
gs.step(560, check_legality=False, in_place=True) # Target 1
if gs.pending_choices:
gs.step(561, check_legality=False, in_place=True) # Target 2
assert bool(p2.tapped_members[0]) == True
assert bool(p2.tapped_members[1]) == True
def test_pln_bp4_005_r_smoke(self, game_state):
self.test_pln_bp4_005_p_smoke(game_state)
def test_pln_bp4_006_p_smoke(self, game_state):
gs = game_state
card_id = self.get_card_id(gs, "PL!N-bp4-006-P")
p1 = gs.players[0]
niji_id = self.get_card_id(gs, "PL!N-sd1-001-SD")
gs.member_db[niji_id].cost = 4
p1.hand = [card_id, niji_id]
p1.energy_zone = [fodder_id := self.get_card_id(gs, "PL!-sd1-001-SD")] * 10
p1.tapped_energy.fill(False)
gs.current_player = 0
gs.phase = Phase.MAIN
gs.step(1, check_legality=False, in_place=True) # Play
# Trigger energy cost
if gs.pending_choices:
gs.step(600, check_legality=False, in_place=True)
if gs.pending_choices:
gs.step(601, check_legality=False, in_place=True)
# Effect: Play from hand
if gs.pending_choices:
choice_type, params = gs.pending_choices[0]
if niji_id in params["cards"]:
idx = params["cards"].index(niji_id)
gs.step(500 + idx, check_legality=False, in_place=True)
# Slot selection
if gs.pending_choices:
gs.step(1, check_legality=False, in_place=True)
assert niji_id in p1.stage
def test_pln_bp4_006_r_smoke(self, game_state):
pass
def test_pln_bp4_007_p_smoke(self, game_state):
pass