aboutsummaryrefslogtreecommitdiff
path: root/internal/game/render_craps_test.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-10-02 17:51:46 -0400
committerhistoria <[not public]>2026-10-02 17:51:46 -0400
commitcac16d1725c46c82a2e62b84c93f7090b2ce0746 (patch)
treee54f6624bdeb47421587656757ef3ce4fd7ebb3f /internal/game/render_craps_test.go
parent4f40f116ba884111c9a66849e620ff9fbc67530a (diff)
downloadthehouseoficarus-cac16d1725c46c82a2e62b84c93f7090b2ce0746.tar.gz
feat: craps table color improvements, die improvements
Diffstat (limited to 'internal/game/render_craps_test.go')
-rw-r--r--internal/game/render_craps_test.go58
1 files changed, 53 insertions, 5 deletions
diff --git a/internal/game/render_craps_test.go b/internal/game/render_craps_test.go
index b3cc1d8..49bda4a 100644
--- a/internal/game/render_craps_test.go
+++ b/internal/game/render_craps_test.go
@@ -57,22 +57,70 @@ func TestCrapsHalfTableGeometryAndPuck(t *testing.T) {
}
t.Log("\n" + renderCrapsSnapshot(&casino.CrapsSnapshot{Point: 6, Field12: 3, Dice: [2]int{3, 3}, Queue: []string{"Alice", "Bob"}, Made: []int{4, 5}, Seen: []int{2, 4, 5, 6, 9}, Phase: "betting", ShootIn: 10, DealerIn: 70}, "none", true))
}
+
+// TestCrapsFireTrackerHighlightsMadePoints pins the Fire half of the tracker:
+// made points highlight, un-made points do not, and no asterisk is involved.
+func TestCrapsFireTrackerHighlightsMadePoints(t *testing.T) {
+ s := &casino.CrapsSnapshot{Point: 6, Made: []int{4, 9}}
+ art := renderCrapsTrackers(s, "xterm256", true)
+ fireRow := ""
+ for _, line := range strings.Split(art, "\n") {
+ if strings.Contains(line, "FIRE") {
+ fireRow = line
+ }
+ }
+ if got := strings.Count(fireRow, color.BgCode("xterm256", 220)); got != 2 {
+ t.Fatalf("expected 2 highlighted fire points, got %d: %q", got, plainRoulette(art))
+ }
+ plain := plainRoulette(art)
+ for _, want := range []string{"[ 4]", "[ 9]"} {
+ if !strings.Contains(plain, want) {
+ t.Fatalf("missing fire point %s: %q", want, plain)
+ }
+ }
+ if strings.Contains(plain, "*") {
+ t.Fatalf("fire tracker still uses an asterisk: %q", plain)
+ }
+}
func TestCrapsTrackersAndDiceStyles(t *testing.T) {
s := &casino.CrapsSnapshot{Point: 6, Made: []int{4, 6}, Seen: []int{2, 12}}
art := renderCrapsTrackers(s, "xterm256", true)
plain := plainRoulette(art)
- for _, token := range []string{"[ 4*]", "[ 5 ]", "[ 6*]", " 2*", "12*"} {
+ // Both trackers bracket every number; made/rolled numbers are shown by the
+ // highlight alone, with no asterisk.
+ for _, token := range []string{"[ 4]", "[ 5]", "[ 6]", "[ 2]", "[12]"} {
if !strings.Contains(plain, token) {
t.Fatal("tracker missing", token)
}
}
+ if strings.Contains(plain, "*") || strings.Contains(plain, "= rolled") {
+ t.Fatalf("tracker still uses asterisks or the rolled legend: %q", plain)
+ }
if strings.Count(art, color.BgCode("xterm256", 220)) != 4 {
- t.Fatal("wrong number of filled tracker tokens")
+ t.Fatal("wrong number of highlighted tracker tokens")
+ }
+ if !strings.Contains(art, color.BgCode("xterm256", 24)) {
+ t.Fatal("tracker background is not blue")
+ }
+ if strings.Contains(art, color.BgCode("xterm256", 124)) {
+ t.Fatal("tracker still uses a red background")
+ }
+ // The ATS payout panel now lives only on the main felt, and the fire odds
+ // share a single row.
+ if strings.Contains(plain, "DISTINCT POINTS") || strings.Contains(plain, "34:1") || strings.Contains(plain, "175:1") {
+ t.Fatalf("tracker still shows a payout panel: %q", plain)
+ }
+ if !strings.Contains(plain, "4 POINTS 24:1") {
+ t.Fatalf("fire odds not collapsed to one row: %q", plain)
+ }
+ feltArt := renderCrapsFelt(s, "xterm256", true)
+ if !strings.Contains(feltArt, color.BgCode("xterm256", 24)) {
+ t.Fatal("felt Fire/ATS spots are not blue")
}
- if !strings.Contains(art, color.BgCode("xterm256", 124)) || !strings.Contains(art, color.BgCode("xterm256", 24)) {
- t.Fatal("fire/ATS tracker backgrounds are not red/blue")
+ if strings.Contains(feltArt, color.BgCode("xterm256", 124)) {
+ t.Fatal("felt still uses a red bonus background")
}
- if !strings.Contains(renderCrapsFelt(s, "xterm256", true), color.BgCode("xterm256", 22)) {
+ if !strings.Contains(feltArt, color.BgCode("xterm256", 22)) {
t.Fatal("felt not dark green")
}
g := &Game{}