From 87d08f0151e643951769e323995f1c5ed89ee200 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 18 Sep 2026 01:50:17 -0400 Subject: fix: harden economy recovery, shutdown concurrency, world validation, and inventory-loss paths --- internal/casino/minbet_regression_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 internal/casino/minbet_regression_test.go (limited to 'internal/casino/minbet_regression_test.go') diff --git a/internal/casino/minbet_regression_test.go b/internal/casino/minbet_regression_test.go new file mode 100644 index 0000000..578c251 --- /dev/null +++ b/internal/casino/minbet_regression_test.go @@ -0,0 +1,25 @@ +package casino + +import "testing" + +// TestMinBetAboveDefaultMaxRejected guards the config/validate + Normalize +// interaction: an unset max_bet defaults to DefaultMaxBet, so a larger min_bet +// must be rejected (and Normalize must never leave MaxBet below MinBet), or the +// game would accept a table every wager is rejected from. +func TestMinBetAboveDefaultMaxRejected(t *testing.T) { + if err := (TableConfig{ID: "bj", Game: GameBlackjack, MinBet: DefaultMaxBet + 1}).Validate(); err == nil { + t.Fatal("table accepted min_bet above the default max") + } + if err := (MachineConfig{ID: "slots", Game: GameSlots, MinBet: DefaultMaxBet + 1}).Validate(); err == nil { + t.Fatal("machine accepted min_bet above the default max") + } + + m := MachineConfig{ID: "slots", Game: GameSlots, MinBet: DefaultMaxBet + 5}.Normalize() + if m.MaxBet < m.MinBet { + t.Fatalf("normalized machine left max %d below min %d", m.MaxBet, m.MinBet) + } + tc := TableConfig{ID: "bj", Game: GameBlackjack, MinBet: DefaultMaxBet + 5}.Normalize() + if tc.MaxBet < tc.MinBet { + t.Fatalf("normalized table left max %d below min %d", tc.MaxBet, tc.MinBet) + } +} -- cgit v1.2.3