diff --git a/color_test.go b/color_test.go index bbe07f1..cc0ab55 100644 --- a/color_test.go +++ b/color_test.go @@ -7,8 +7,6 @@ import ( ) func TestSetColorProfile(t *testing.T) { - t.Parallel() - tt := []struct { profile termenv.Profile input string @@ -85,3 +83,145 @@ func TestHexToColor(t *testing.T) { } } } + +func TestRGBA(t *testing.T) { + tt := []struct { + profile termenv.Profile + darkBg bool + input TerminalColor + expected uint + }{ + // lipgloss.Color + { + termenv.TrueColor, + true, + Color("#FF0000"), + 0xFF0000, + }, + { + termenv.TrueColor, + true, + Color("9"), + 0xFF0000, + }, + { + termenv.TrueColor, + true, + Color("21"), + 0x0000FF, + }, + // lipgloss.AdaptiveColor + { + termenv.TrueColor, + true, + AdaptiveColor{Dark: "#FF0000", Light: "#0000FF"}, + 0xFF0000, + }, + { + termenv.TrueColor, + false, + AdaptiveColor{Dark: "#FF0000", Light: "#0000FF"}, + 0x0000FF, + }, + { + termenv.TrueColor, + true, + AdaptiveColor{Dark: "9", Light: "21"}, + 0xFF0000, + }, + { + termenv.TrueColor, + false, + AdaptiveColor{Dark: "9", Light: "21"}, + 0x0000FF, + }, + // lipgloss.CompleteColor + { + termenv.TrueColor, + true, + CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + 0xFF0000, + }, + { + termenv.ANSI256, + true, + CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + 0xFFFFFF, + }, + { + termenv.ANSI, + true, + CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + 0x0000FF, + }, + // lipgloss.CompleteAdaptiveColor + // dark + { + termenv.TrueColor, + true, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#0000FF", ANSI256: "231", ANSI: "12"}, + }, + 0xFF0000, + }, + { + termenv.ANSI256, + true, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#FF0000", ANSI256: "21", ANSI: "12"}, + }, + 0xFFFFFF, + }, + { + termenv.ANSI, + true, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "9"}, + }, + 0x0000FF, + }, + // light + { + termenv.TrueColor, + false, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#0000FF", ANSI256: "231", ANSI: "12"}, + }, + 0x0000FF, + }, + { + termenv.ANSI256, + false, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#FF0000", ANSI256: "21", ANSI: "12"}, + }, + 0x0000FF, + }, + { + termenv.ANSI, + false, + CompleteAdaptiveColor{ + Dark: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "12"}, + Light: CompleteColor{TrueColor: "#FF0000", ANSI256: "231", ANSI: "9"}, + }, + 0xFF0000, + }, + } + + for i, tc := range tt { + SetColorProfile(tc.profile) + SetHasDarkBackground(tc.darkBg) + + r, g, b, _ := tc.input.RGBA() + o := uint(r/256)<<16 + uint(g/256)<<8 + uint(b/256) + + if o != tc.expected { + t.Errorf("expected %X, got %X (test #%d)", tc.expected, o, i+1) + } + } +}