aboutsummaryrefslogtreecommitdiff
path: root/internal/casino/blackjack_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-05 16:31:22 -0400
committerhistoria <[not public]>2026-09-05 16:31:22 -0400
commitf4ea40c4b3589104dfaced3481ba19c5735889ae (patch)
tree66ead13206e52a65e64d6ba5d1576b63954682e9 /internal/casino/blackjack_test.go
parent9a716a7d2ce514f452b425caedc1a9a15cde09f0 (diff)
downloadthehouseoficarus-main.tar.gz
fix: max bet no longer listed numerically, non-bettors can leave mid-roundHEADmain
Diffstat (limited to 'internal/casino/blackjack_test.go')
-rw-r--r--internal/casino/blackjack_test.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/internal/casino/blackjack_test.go b/internal/casino/blackjack_test.go
index 510077d..0f7527c 100644
--- a/internal/casino/blackjack_test.go
+++ b/internal/casino/blackjack_test.go
@@ -323,6 +323,27 @@ func TestBlackjackDisconnectEarlierSeatPreservesTurn(t *testing.T) {
}
}
+func TestBlackjackNonBettorMayLeaveMidRound(t *testing.T) {
+ table := newBlackjackTable(1, TableConfig{ID: "blackjack", Game: GameBlackjack, MaxPlayers: 2}, newTestRand())
+ table.join("alice")
+ table.join("bob")
+ wa := &testWallet{credits: 100}
+ table.bet("alice", "", 10, wa) // opens the betting window
+ if events := table.leave("bob"); !hasMessage(events, "You stand up.") {
+ t.Fatalf("non-bettor leave blocked mid-round: %+v", events)
+ }
+ if table.players.count() != 1 {
+ t.Fatalf("bob's seat was not freed: count=%d", table.players.count())
+ }
+ // The bettor's round still proceeds on the next tick.
+ if events := table.tick(); !hasSnapshot(events) {
+ t.Fatalf("round did not start after the non-bettor left: %+v", events)
+ }
+ if events := table.leave("alice"); !hasMessage(events, "middle of a blackjack round") {
+ t.Fatalf("bettor leave not blocked: %+v", events)
+ }
+}
+
func hasMessage(events []Event, fragment string) bool {
for _, event := range events {
if contains(event.Message, fragment) || contains(event.PrivateMessage, fragment) {