aboutsummaryrefslogtreecommitdiff
path: root/internal/casino/roulette_racetrack_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-29 18:58:28 -0400
committerhistoria <[not public]>2026-09-29 18:58:28 -0400
commit624626b9a10ae47cf7d5f6e91765570ed759bd74 (patch)
tree9812f5d254b7d9cfe1d2fcb6da53362e974541b0 /internal/casino/roulette_racetrack_test.go
parentff9002b96e35ad0808945e7c35791460c9ca8776 (diff)
downloadthehouseoficarus-624626b9a10ae47cf7d5f6e91765570ed759bd74.tar.gz
feat: better roulette racetrack graphics and payout table
Diffstat (limited to 'internal/casino/roulette_racetrack_test.go')
-rw-r--r--internal/casino/roulette_racetrack_test.go34
1 files changed, 27 insertions, 7 deletions
diff --git a/internal/casino/roulette_racetrack_test.go b/internal/casino/roulette_racetrack_test.go
index 7c465b8..29e2809 100644
--- a/internal/casino/roulette_racetrack_test.go
+++ b/internal/casino/roulette_racetrack_test.go
@@ -33,6 +33,9 @@ func TestRouletteCallBetMath(t *testing.T) {
chips := 0
for _, part := range bet.parts {
chips += part.chips
+ if _, mult := rouletteBet(strings.Join(part.pockets, " "), false); mult != part.mult {
+ t.Fatalf("%s: invalid component %v or multiplier %d (want %d)", bet.name, part.pockets, part.mult, mult)
+ }
}
if chips != bet.chips {
t.Fatalf("%s: parts total %d chips, want %d", bet.name, chips, bet.chips)
@@ -68,7 +71,7 @@ func TestRouletteCallBetAliases(t *testing.T) {
{[]string{"voisins", "voisins du zero", "Voisins du Zéro", "vdz", "grands voisins du zero"}, "voisins"},
{[]string{"tiers", "tiers du cylindre", "le tiers du cylindre", "tdc"}, "tiers"},
{[]string{"orphelins", "orphans", "les orphelins"}, "orphelins"},
- {[]string{"zero spiel", "zerospiel", "spiel", "jeu zero", "zero game"}, "zerospiel"},
+ {[]string{"zero", "Zero", "jeu zero", "Jeu Zero", "jeuzero", "JeuZero", "jeu zéro"}, "jeuzero"},
} {
var want rouletteWager
for _, bet := range rouletteCallBets {
@@ -152,13 +155,13 @@ func TestRouletteCallBetPayouts(t *testing.T) {
if got := payout(orphelins, "6", 5); got != 18 {
t.Fatalf("orphelins 5 on 6 = %d, want 18", got)
}
- // Zero Spiel: 26 is the straight-up.
- spiel := wager("zero spiel")
- if got := payout(spiel, "26", 4); got != 36 {
- t.Fatalf("zero spiel 4 on 26 = %d, want 36", got)
+ // Jeu Zero: 26 is the straight-up.
+ jeuZero := wager("jeu zero")
+ if got := payout(jeuZero, "26", 4); got != 36 {
+ t.Fatalf("jeu zero 4 on 26 = %d, want 36", got)
}
- if got := payout(spiel, "0", 4); got != 18 {
- t.Fatalf("zero spiel 4 on 0 = %d, want 18", got)
+ if got := payout(jeuZero, "0", 4); got != 18 {
+ t.Fatalf("jeu zero 4 on 0 = %d, want 18", got)
}
// Tiers is a plain six-way split.
tiers := wager("tiers")
@@ -263,3 +266,20 @@ func TestRouletteRacetrackConfig(t *testing.T) {
t.Fatalf("double-zero racetrack accepted: %v", err)
}
}
+
+func TestRouletteZeroNameIsNotPocketZero(t *testing.T) {
+ call, ok := rouletteWagerFor("Zero", false, true)
+ if !ok || len(call.shares) != 7 {
+ t.Fatalf("Zero did not resolve to Jeu Zero: %+v", call)
+ }
+ straight, ok := rouletteWagerFor("0", false, true)
+ if !ok || len(straight.shares) != 1 {
+ t.Fatalf("0 did not resolve to a straight bet: %+v", straight)
+ }
+ if got, err := straight.shares["0"].payout(10); err != nil || got != 360 {
+ t.Fatalf("straight zero return %d, %v", got, err)
+ }
+ if got, err := call.shares["0"].payout(10); err != nil || got != 45 {
+ t.Fatalf("Jeu Zero return %d, %v", got, err)
+ }
+}