package clifmt import ( "testing" ) func escape(in string) string { out := make([]rune, 0) for _, char := range in { if char == '\\' { out = append(out, []rune("\\\\")...) } else if char == '\n' { out = append(out, []rune("\\n")...) } else if char == '\r' { out = append(out, []rune("\\r")...) } else if char == '\t' { out = append(out, []rune("\\t")...) } else if char == '\033' { out = append(out, []rune("\\033")...) } else { out = append(out, char) } } return string(out) } func TestColoring(t *testing.T) { tests := []struct { Text string Color byte Bold bool Expect string }{ {"any text", 0, false, "\033[0;0many text\033[0m"}, {"any text", 1, false, "\033[0;1many text\033[0m"}, {"any text", 32, false, "\033[0;32many text\033[0m"}, {"any text", 0, true, "\033[1;0many text\033[0m"}, {"any text", 1, true, "\033[1;1many text\033[0m"}, {"any text", 32, true, "\033[1;32many text\033[0m"}, } for i, test := range tests { colored := Color(test.Color, test.Text, test.Bold) if colored != test.Expect { t.Errorf("[%d] expected '%s', got '%s'", i, escape(test.Expect), escape(colored)) } } }