aboutsummaryrefslogtreecommitdiff
path: root/internal/casino/blackjack_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/casino/blackjack_test.go')
-rw-r--r--internal/casino/blackjack_test.go25
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)
}