package log import ( "bytes" "regexp" "testing" ) func TestLogFatalf(t *testing.T) { var output *bytes.Buffer tests := []struct { Level priority Format string Values []interface{} ExpectedPattern string }{ {fatal, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[fatal\\] testing.go:\\d+ 1 \\+ 1 = 2"}, {error, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[error\\] testing.go:\\d+ 1 \\+ 1 = 2"}, {info, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[info\\] 1 \\+ 1 = 2"}, {debug, "%d + %d = %d", []interface{}{1, 1, 2}, "\\[debug\\] testing.go:\\d+ 1 \\+ 1 = 2"}, } for i, test := range tests { output = &bytes.Buffer{} logf(output, test.Level, test.Format, test.Values...) expected := regexp.MustCompile(test.ExpectedPattern) if !expected.MatchString(output.String()) { t.Errorf("[%d] Log output does not match expected pattern:\n\tExpected: %s\n\tOutput: %s", i, expected.String(), output.String()) } } }