diff options
Diffstat (limited to 'internal/game/render_craps_test.go')
| -rw-r--r-- | internal/game/render_craps_test.go | 45 |
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) } |
