aboutsummaryrefslogtreecommitdiff
path: root/internal/game/render_craps_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/render_craps_test.go')
-rw-r--r--internal/game/render_craps_test.go45
1 files changed, 42 insertions, 3 deletions
diff --git a/internal/game/render_craps_test.go b/internal/game/render_craps_test.go
index 49bda4a..b6a70be 100644
--- a/internal/game/render_craps_test.go
+++ b/internal/game/render_craps_test.go
@@ -18,7 +18,7 @@ func TestCrapsHalfTableGeometryAndPuck(t *testing.T) {
s := &casino.CrapsSnapshot{Point: point, Field12: 3}
art := renderCrapsFelt(s, "none", unicode)
rows := strings.Split(strings.TrimSuffix(art, "\n"), "\n")
- if len(rows) != 26 {
+ if len(rows) != 21 {
t.Fatal(len(rows))
}
for _, row := range rows {
@@ -48,7 +48,7 @@ func TestCrapsHalfTableGeometryAndPuck(t *testing.T) {
if !strings.Contains(art, "12 PAYS TRIPLE") {
t.Fatal("field variant invisible")
}
- for _, bet := range []string{"DON'T COME", "C O M E", "FIELD", "DON'T PASS", "PASS LINE", "HARD 4", "HARD 6", "HARD 8", "HARD 10", "SEVEN", "CRAPS", "ELEVEN", "ACES", "ACE 3", "BOXCARS", "HORN", "HOP"} {
+ for _, bet := range []string{"DON'T COME", "C O M E", "F I E L D", "DON'T PASS", "PASS LINE", "HARD 4", "HARD 6", "HARD 8", "HARD 10", "SEVEN", "CRAPS", "ELEVEN", "ACES", "ACE 3", "BOXCARS", "HORN", "HOP"} {
if strings.Count(art, bet) != 1 {
t.Fatalf("missing or duplicate %q", bet)
}
@@ -58,6 +58,45 @@ 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))
}
+// TestCrapsFeltOddsLabelAndCompaction pins the compacted felt copy: the
+// free-odds cap is printed in parentheses, the old behind-the-line suffix is
+// gone, and FIELD is letter-spaced.
+func TestCrapsFeltOddsLabelAndCompaction(t *testing.T) {
+ base := &casino.CrapsSnapshot{Point: 6, Field12: 3}
+ art := plainRoulette(renderCrapsFelt(base, "none", true))
+ for _, want := range []string{"F I E L D", "FREE ODDS (3x-4x-5x)", "DON'T PASS", "BAR 12"} {
+ if !strings.Contains(art, want) {
+ t.Fatalf("felt missing %q", want)
+ }
+ }
+ if strings.Count(art, "BAR 12") != 2 {
+ t.Fatalf("expected BAR 12 on both don't rails: %q", art)
+ }
+ for _, gone := range []string{"BEHIND THE LINE", "DON'T PASS /", "FREE ODDS /"} {
+ if strings.Contains(art, gone) {
+ t.Fatalf("felt still shows %q", gone)
+ }
+ }
+ custom := &casino.CrapsSnapshot{Point: 6, Field12: 3, Odds: "100x"}
+ if !strings.Contains(plainRoulette(renderCrapsFelt(custom, "none", true)), "FREE ODDS (100x)") {
+ t.Fatal("custom odds cap not shown")
+ }
+}
+
+// TestCrapsTrackerBracketsRegularNumbersBold pins the mixed tracker weights:
+// the bracket glyphs are regular while the total itself stays bold.
+func TestCrapsTrackerBracketsRegularNumbersBold(t *testing.T) {
+ art := renderCrapsTrackers(&casino.CrapsSnapshot{}, "xterm256", true)
+ regular := color.Render("xterm256", color.ColorSpec{Fg: 229, Bg: 24}, "[")
+ bold := color.Render("xterm256", color.ColorSpec{Fg: 229, Bg: 24, Bold: true}, " 4")
+ if !strings.Contains(art, regular) {
+ t.Fatal("tracker brackets are not regular weight")
+ }
+ if !strings.Contains(art, bold) {
+ t.Fatal("tracker numbers are not bold")
+ }
+}
+
// 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) {
@@ -168,7 +207,7 @@ func TestCrapsRemindersFollowArt(t *testing.T) {
conn.data = nil
g.emitCasinoEvents(g.Casino.Table(1, "c").Status("alice"))
text := plainRoulette(string(conn.data))
- felt, commands := strings.Index(text, "PASS LINE"), strings.Index(text, "bet <amount> on <target>")
+ felt, commands := strings.Index(text, "PASS LINE"), strings.Index(text, "bet <n> on <bet>")
if felt < 0 || commands < felt {
t.Fatal("reminder above graphic", text)
}