Spaces:
Running
Running
File size: 2,587 Bytes
bb3fbf9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
import pytest
from engine.game.enums import Phase
from engine.game.game_state import GameState
from engine.game.serializer import serialize_state
from engine.models.card import LiveCard, MemberCard
def test_performance_results_serialization():
gs = GameState()
gs.member_db = {}
gs.live_db = {}
# Setup players with a live and a member
p0 = gs.players[0]
p1 = gs.players[1]
# Add dummy data to DB
card_id = 1001
live_id = 9001
member = MemberCard(
card_id=card_id,
card_no="TEST-001",
name="Test Singer",
cost=1,
blades=1,
hearts=[1, 0, 0, 0, 0, 0, 0],
blade_hearts=[0, 0, 0, 0, 0, 0, 0],
abilities=[],
)
live = LiveCard(
card_id=live_id,
name="Test Live",
card_no="LIVE-001",
score=1,
required_hearts=[1, 0, 0, 0, 0, 0, 0],
abilities=[],
)
GameState.member_db[card_id] = member
GameState.live_db[live_id] = live
gs.member_db = GameState.member_db
gs.live_db = GameState.live_db
# Setup P0 stage and live
p0.stage[0] = card_id
p0.live_zone = [live_id]
# Run performance for P0
gs.phase = Phase.PERFORMANCE_P1
gs._do_performance(0)
# Verify performance_results for P0 exists
assert 0 in gs.performance_results
assert gs.performance_results[0]["success"] is True
# Now simulate moving to LIVE_RESULT
gs.phase = Phase.LIVE_RESULT
gs._do_live_result()
# In LIVE_RESULT, turn has advanced (Phase 1), current player is first_player
# After _do_live_result, it should have copied into last_performance_results
assert hasattr(gs, "last_performance_results")
assert gs.last_performance_results is not None
assert 0 in gs.last_performance_results
# Serialize state
serialized = serialize_state(gs)
# Check if last_performance_results is in serialized output
assert "last_performance_results" in serialized
assert "0" in serialized["last_performance_results"] or 0 in serialized["last_performance_results"]
# Check content
perf_0 = (
serialized["last_performance_results"]["0"]
if "0" in serialized["last_performance_results"]
else serialized["last_performance_results"][0]
)
assert perf_0["success"] is True
assert len(perf_0["member_contributions"]) == 1
assert perf_0["member_contributions"][0]["name"] == "Test Singer"
if __name__ == "__main__":
pytest.main([__file__])
|