elvish/pkg/ui/color_test.go
Qi Xiao 7a324880b0 pkg/ui: Test color.go.
This addresses #944.
2020-04-01 00:37:09 +01:00

53 lines
1.3 KiB
Go

package ui
import (
"reflect"
"testing"
)
func TestColorSGR(t *testing.T) {
// Test the SGR sequences of colors indirectly via VTString of Text, since
// that is how they are used.
testTextVTString(t, []textVTStringTest{
{T("foo", FgRed), "\033[31mfoo\033[m"},
{T("foo", BgRed), "\033[41mfoo\033[m"},
{T("foo", FgBrightRed), "\033[91mfoo\033[m"},
{T("foo", BgBrightRed), "\033[101mfoo\033[m"},
{T("foo", Fg(XTerm256Color(30))), "\033[38;5;30mfoo\033[m"},
{T("foo", Bg(XTerm256Color(30))), "\033[48;5;30mfoo\033[m"},
{T("foo", Fg(TrueColor(30, 40, 50))), "\033[38;2;30;40;50mfoo\033[m"},
{T("foo", Bg(TrueColor(30, 40, 50))), "\033[48;2;30;40;50mfoo\033[m"},
})
}
var colorStringTests = []struct {
color Color
str string
}{
{Red, "red"},
{BrightRed, "bright-red"},
{XTerm256Color(30), "color30"},
{TrueColor(0x33, 0x44, 0x55), "#334455"},
}
func TestColorString(t *testing.T) {
for _, test := range colorStringTests {
s := test.color.String()
if s != test.str {
t.Errorf("%v.String() -> %q, want %q", test.color, s, test.str)
}
}
}
func TestParseColor(t *testing.T) {
for _, test := range colorStringTests {
c := parseColor(test.str)
if !reflect.DeepEqual(c, test.color) {
t.Errorf("parseError(%q) -> %v, want %v", test.str, c, test.color)
}
}
}