package clifmt import ( "fmt" "testing" ) var lastPrint = "" func mockupPrinter(format string, args ...interface{}) (int, error) { lastPrint = fmt.Sprintf(format, args...) return 0, nil } func TestSpecial(t *testing.T) { defaultPrinter = mockupPrinter tests := []struct { Pre func() Processed string Expect string }{ {nil, Warn(), "\033[0;31m/!\\\033[0m"}, {nil, Warn("any text"), "\033[0;31m/!\\\033[0m any text"}, {nil, Info(), "\033[0;34m(!)\033[0m"}, {nil, Info("any text"), "\033[0;34m(!)\033[0m any text"}, {func() { Title("any text") }, "", "\n\033[0;33m>>\033[0m |1| any text \033[0;33m<<\033[0m\n"}, {func() { Title("any text") }, "", "\n\033[0;33m>>\033[0m |2| any text \033[0;33m<<\033[0m\n"}, } for i, test := range tests { if test.Pre != nil { test.Pre() test.Processed = lastPrint } if test.Processed != test.Expect { t.Errorf("[%d] expected '%s', got '%s'", i, escape(test.Expect), escape(test.Processed)) } } }