Spaces:
Running
Running
| 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__]) | |