clifmt/printer_test.go

86 lines
2.4 KiB
Go

package clifmt
import (
"testing"
)
func TestColoring(t *testing.T) {
tests := []struct {
Input string
Output string
}{
// foreground + background
{
"start ${some text input}(#ff0000:#00ff00) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
}, {
"start ${some text input}(#f00:#0f0) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
}, {
"start ${some text input}(red:green) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
},
// mixed notations
{
"start ${some text input}(red:#00ff00) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
}, {
"start ${some text input}(red:#0f0) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
}, {
"start ${some text input}(#ff0000:green) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
}, {
"start ${some text input}(#f00:green) end\n",
"start \033[48;2;0;255;0m\033[38;2;255;0;0msome text input\033[0m\033[0m end\n",
},
// foreground only
{
"start ${some text input}(red) end\n",
"start \033[38;2;255;0;0msome text input\033[0m end\n",
}, {
"start ${some text input}(#ff0000) end\n",
"start \033[38;2;255;0;0msome text input\033[0m end\n",
}, {
"start ${some text input}(#f00) end\n",
"start \033[38;2;255;0;0msome text input\033[0m end\n",
},
// background only
{
"start ${some text input}(:blue) end\n",
"start \033[48;2;0;0;255msome text input\033[0m end\n",
}, {
"start ${some text input}(:#0000ff) end\n",
"start \033[48;2;0;0;255msome text input\033[0m end\n",
}, {
"start ${some text input}(:#00f) end\n",
"start \033[48;2;0;0;255msome text input\033[0m end\n",
},
// multi matches
{
"start ${text1}(red) separation ${text2}(#0f0) end\n",
"start \033[38;2;255;0;0mtext1\033[0m separation \033[38;2;0;255;0mtext2\033[0m end\n",
}, {
"start ${text1}(:red) separation ${text2}(:#0f0) end\n",
"start \033[48;2;255;0;0mtext1\033[0m separation \033[48;2;0;255;0mtext2\033[0m end\n",
}}
for i, test := range tests {
output, err := Sprintf(test.Input)
if err != nil {
t.Errorf("[%d] unexpected error <%v>", i, err)
break
}
if output != test.Output {
t.Errorf("[%d] expected '%s', got '%s'", i, test.Output, output)
}
}
}