1package tui
2
3import (
4 "reflect"
5 "testing"
6)
7
8func TestDimLinesPreservesDimmingAcrossStyledSegments(t *testing.T) {
9 lines := []string{
10 "plain",
11 Dark.FGColor(Dark.Accent, "accent") + Dark.FGColor(Dark.Error, "error"),
12 }
13
14 got := DimLines(lines)
15 want := []string{
16 "\x1b[2mplain\x1b[22m",
17 "\x1b[2m\x1b[38;5;111maccent\x1b[0m\x1b[2m\x1b[38;5;203merror\x1b[0m\x1b[2m\x1b[22m",
18 }
19 if !reflect.DeepEqual(got, want) {
20 t.Fatalf("DimLines() = %#v, want %#v", got, want)
21 }
22 if !reflect.DeepEqual(lines, []string{
23 "plain",
24 Dark.FGColor(Dark.Accent, "accent") + Dark.FGColor(Dark.Error, "error"),
25 }) {
26 t.Fatalf("DimLines mutated input: %#v", lines)
27 }
28}
29
30func TestDimRetainsFaintAfterBold(t *testing.T) {
31 const (
32 dim = "\x1b[2m"
33 off = "\x1b[22m"
34 )
35 if got, want := Dim("before "+Bold("bold")+" after"), dim+"before \x1b[1mbold"+off+dim+" after"+off; got != want {
36 t.Fatalf("Dim() = %q, want %q", got, want)
37 }
38 if got, want := "\x1b[31m"+Dim("faint")+" tail", "\x1b[31m"+dim+"faint"+off+" tail"; got != want {
39 t.Fatalf("Dim() reset its caller's color: %q, want %q", got, want)
40 }
41}
42
43func TestCursorColorUsesTerminalColor(t *testing.T) {
44 if got, want := CursorColor(ColorRGB(1, 2, 3)), "\x1b]12;rgb:01/02/03\x07"; got != want {
45 t.Fatalf("CursorColor() = %q, want %q", got, want)
46 }
47}