1package theme
2
3import (
4 "strings"
5 "testing"
6)
7
8func TestReadableTextColor(t *testing.T) {
9 tests := []struct {
10 name string
11 background string
12 preferred string
13 want string
14 }{
15 {
16 name: "keeps readable palette text",
17 background: "#282828",
18 preferred: "#ffffff",
19 want: "#ffffff",
20 },
21 {
22 name: "uses light text on dark control",
23 background: "#775f79",
24 preferred: "#3d303f",
25 want: "#ffffff",
26 },
27 {
28 name: "uses dark text on light control",
29 background: "#f0f0f0",
30 preferred: "#dddddd",
31 want: "#000000",
32 },
33 }
34
35 for _, tt := range tests {
36 t.Run(tt.name, func(t *testing.T) {
37 if got := readableTextColor(tt.background, tt.preferred); got != tt.want {
38 t.Fatalf("readableTextColor(%q, %q) = %q, want %q", tt.background, tt.preferred, got, tt.want)
39 }
40 })
41 }
42}
43
44func TestPaletteToCSSVarsAddsReadableControlText(t *testing.T) {
45 palette := DefaultLightPalette()
46 palette.SurfaceVariant = "#775f79"
47 palette.Text = "#3d303f"
48
49 css := palette.ToCSSVars()
50 if !strings.Contains(css, " --control-text: #ffffff;\n") {
51 t.Fatalf("ToCSSVars() did not add light control text for dark input background:\n%s", css)
52 }
53}
54
55func TestModeColorsToCSSVarsAddsReadableModeText(t *testing.T) {
56 colors := DefaultModeColors()
57 colors.TabMode = "#ffe066"
58
59 css := colors.ToCSSVars()
60 if !strings.Contains(css, " --tab-mode-text: #000000;\n") {
61 t.Fatalf("ToCSSVars() did not add dark text for light tab mode color:\n%s", css)
62 }
63 if !strings.Contains(css, " --session-mode-text: #ffffff;\n") {
64 t.Fatalf("ToCSSVars() did not keep white text for dark session mode color:\n%s", css)
65 }
66}