From ffc7b582e9c14fdc2e579b9239b5ff7ad9a0d90a Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 29 Sep 2026 19:48:32 -0400 Subject: feat: roulette history tracker --- internal/casino/roulette_test.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'internal/casino/roulette_test.go') diff --git a/internal/casino/roulette_test.go b/internal/casino/roulette_test.go index 0a43677..9a62236 100644 --- a/internal/casino/roulette_test.go +++ b/internal/casino/roulette_test.go @@ -307,7 +307,12 @@ func TestRouletteTimedPhasesAndSettlement(t *testing.T) { t.Fatalf("bad settlement: %+v", w) } s := events[0].Snapshot.(*RouletteSnapshot) - if s.Pockets != [3]string{wheel[(index+len(wheel)-1)%len(wheel)], wheel[index], wheel[(index+1)%len(wheel)]} { + n := len(wheel) + wantPockets := [5]string{ + wheel[(index-2+n)%n], wheel[(index-1+n)%n], wheel[index], + wheel[(index+1)%n], wheel[(index+2)%n], + } + if s.Pockets != wantPockets { t.Fatal("incorrect wheel neighbors") } table.tick() @@ -317,6 +322,24 @@ func TestRouletteTimedPhasesAndSettlement(t *testing.T) { } } } +func TestRouletteBetDoesNotRedrawBoard(t *testing.T) { + table := rouletteFixture() + table.join("a") + events := table.bet("a", "red", 10, &testWallet{chips: 100}) + for _, e := range events { + if e.Snapshot != nil { + t.Fatalf("placing a wager redrew the board: %+v", e) + } + } + // The board is still available on demand and after settlement. + for _, e := range table.status("a") { + if _, ok := e.Snapshot.(*RouletteSnapshot); ok { + return + } + } + t.Fatal("table status did not offer the board") +} + func TestRouletteRefundAndPersistenceFailure(t *testing.T) { for _, spinning := range []bool{false, true} { table := rouletteFixture() -- cgit v1.2.3