From 00fe5f7ead43627fa283035b27365924b76c5a0f Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 29 Sep 2026 16:50:40 -0400 Subject: feat: roulette bets street, corner, split, etc. --- internal/game/render_roulette_test.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'internal/game/render_roulette_test.go') diff --git a/internal/game/render_roulette_test.go b/internal/game/render_roulette_test.go index b1a6005..1cb75ce 100644 --- a/internal/game/render_roulette_test.go +++ b/internal/game/render_roulette_test.go @@ -86,9 +86,9 @@ func TestRouletteArtModes(t *testing.T) { } } if mode != "none" { - // The whole 0/00 lane is green: blank cells above and below - // the zeros fill the rectangle. - wantGreen := 3 + // The whole 0/00 lane is green: the three numbered rows plus + // the two separator rows that run through the lane. + wantGreen := 5 if got := strings.Count(layoutArt, color.BgCode(mode, 2)); got != wantGreen { t.Fatalf("green cells on board = %d, want %d", got, wantGreen) } @@ -199,6 +199,33 @@ func TestRouletteLayoutConnections(t *testing.T) { } } +// TestRouletteZeroPanel checks the two zero-panel fixes: the whole five-row +// lane carries the green background, and its outer corners are rounded in +// Unicode mode while ASCII mode stays square. +func TestRouletteZeroPanel(t *testing.T) { + for _, double := range []bool{false, true} { + colored := renderRouletteLayout(double, "xterm256", true) + rows := strings.Split(colored, "\n") + // Interior rows 2-6: top numbered row, separator, middle, separator, + // bottom numbered row. Each must contain the green background. + for row := 2; row <= 6; row++ { + if !strings.Contains(rows[row], color.BgCode("xterm256", 2)) { + t.Fatalf("double=%v: zero lane row %d is not green:\n%s", double, row, plainRoulette(colored)) + } + } + plainRows := strings.Split(plainRoulette(colored), "\n") + if !strings.HasPrefix(plainRows[1], "╭") || !strings.HasPrefix(plainRows[7], "╰") { + t.Fatalf("double=%v: zero panel corners are not rounded:\n%s", double, plainRoulette(colored)) + } + ascii := plainRoulette(renderRouletteLayout(double, "none", false)) + for _, r := range ascii { + if r > 127 { + t.Fatalf("double=%v: non-ASCII rune %q in ASCII mode", double, r) + } + } + } +} + func TestRouletteResultSizesAndNeighbors(t *testing.T) { for _, unicode := range []bool{false, true} { for _, size := range []int{1, 5, 7, 9} { -- cgit v1.2.3