diff options
Diffstat (limited to 'internal/casino/blackjack_test.go')
| -rw-r--r-- | internal/casino/blackjack_test.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/internal/casino/blackjack_test.go b/internal/casino/blackjack_test.go index f1bef99..89b5d06 100644 --- a/internal/casino/blackjack_test.go +++ b/internal/casino/blackjack_test.go @@ -19,6 +19,18 @@ func TestBlackjackHandTreatsAceAsElevenWhenPossible(t *testing.T) { } } +func TestBlackjackHandScoreShowsBlackjackAs21(t *testing.T) { + if got := handScore(&blackjackHand{cards: []card{{rank: "A"}, {rank: "K"}}}); got != "21" { + t.Fatalf("blackjack score=%q, want 21", got) + } + if got := handScore(&blackjackHand{cards: []card{{rank: "A"}, {rank: "6"}}}); got != "7 or 17" { + t.Fatalf("soft 17 score=%q, want 7 or 17", got) + } + if got := handScore(&blackjackHand{cards: []card{{rank: "10"}, {rank: "8"}}}); got != "18" { + t.Fatalf("hard 18 score=%q, want 18", got) + } +} + func TestBlackjackSettlementRules(t *testing.T) { rules := (BlackjackConfig{}).Normalize() natural := &blackjackHand{bet: 10, cards: []card{{rank: "A"}, {rank: "K"}}} @@ -46,7 +58,7 @@ func TestBlackjackTableStartsAfterAllPlayersBet(t *testing.T) { t.Fatal("round started before all players bet") } events := table.bet("bob", "", 10, wb) - if !hasMessage(events, "New blackjack hand") { + if !hasSnapshot(events) { t.Fatalf("round did not start after all players bet: %+v", events) } } @@ -197,7 +209,7 @@ func TestBlackjackBettingIgnoresDisconnected(t *testing.T) { table.markDisconnected("bob") w := &testWallet{credits: 100} events := table.bet("alice", "", 10, w) - if !hasMessage(events, "New blackjack hand") { + if !hasSnapshot(events) { t.Fatalf("disconnected player stalled the round: %+v", events) } } @@ -226,6 +238,15 @@ func hasMessage(events []Event, fragment string) bool { return false } +func hasSnapshot(events []Event) bool { + for _, event := range events { + if event.Blackjack != nil { + return true + } + } + return false +} + func contains(value, fragment string) bool { return strings.Contains(value, fragment) } |
