Spaces:
Sleeping
Sleeping
| from app import _start_game | |
| from token_holdem.render import CSS, DEALER_BUTTON_COORDS, SEAT_COORDS, table_html | |
| def test_table_layout_constants_are_eight_seat_maps(): | |
| assert SEAT_COORDS == { | |
| 0: (50, 82), | |
| 1: (23, 78), | |
| 2: (8, 54), | |
| 3: (18, 24), | |
| 4: (50, 12), | |
| 5: (82, 24), | |
| 6: (92, 54), | |
| 7: (77, 78), | |
| } | |
| assert DEALER_BUTTON_COORDS == { | |
| 0: (50, 70), | |
| 1: (30, 69), | |
| 2: (20, 54), | |
| 3: (28, 32), | |
| 4: (50, 24), | |
| 5: (72, 32), | |
| 6: (80, 54), | |
| 7: (70, 69), | |
| } | |
| def test_play_mode_renders_human_plus_seven_llm_seats(): | |
| session = _start_game("Tester", 100, "play") | |
| assert session.game is not None | |
| html = table_html(session.game) | |
| assert len(session.game.players) == 8 | |
| assert session.game.players[0].is_human is True | |
| assert html.count('class="seat seat-') == 8 | |
| assert 'class="seat seat-0 human-seat' in html | |
| for slot in range(1, 8): | |
| assert f'class="seat seat-{slot} llm-seat' in html | |
| assert 'class="dealer-button"' in html | |
| assert 'class="center-hud"' in html | |
| assert 'class="community card-row"' in html | |
| assert "Pot " in html | |
| assert "Current actor" in html | |
| def test_dealer_button_uses_slot_coordinates(): | |
| session = _start_game("Tester", 100, "play") | |
| assert session.game is not None | |
| session.game.dealer_index = 0 | |
| html = table_html(session.game) | |
| assert "--dealer-x: 50%; --dealer-y: 70%;" in html | |
| def test_poker_stage_paints_above_side_rails(): | |
| assert ".poker-stage {\n grid-area: stage;\n z-index: calc(var(--z-hud) + 1);" in CSS | |
| def test_table_scales_to_stage_container_not_viewport(): | |
| assert "container-type: inline-size;" in CSS | |
| assert ".token-table {\n position: relative;\n width: 100%;" in CSS | |
| assert "height: clamp(500px, 62.5cqw, 700px);" in CSS | |
| assert "width: clamp(132px, 14cqw, 206px);" in CSS | |