go-astiav/log_test.go

74 lines
1.3 KiB
Go

package astiav
import (
"testing"
"github.com/stretchr/testify/require"
)
type logItem struct {
c Classer
fmt string
l LogLevel
msg string
}
func TestLog(t *testing.T) {
var lis []logItem
SetLogLevel(LogLevelWarning)
require.Equal(t, LogLevelWarning, GetLogLevel())
SetLogCallback(func(c Classer, l LogLevel, fmt, msg string) {
lis = append(lis, logItem{
c: c,
fmt: fmt,
l: l,
msg: msg,
})
})
f := AllocFilterGraph()
defer f.Free()
Log(f, LogLevelInfo, "info")
Log(f, LogLevelWarning, "warning %s", "arg")
Log(f, LogLevelError, "error")
Log(f, LogLevelFatal, "fatal")
require.Equal(t, []logItem{
{
c: f,
fmt: "warning %s",
l: LogLevelWarning,
msg: "warning arg",
},
{
c: f,
fmt: "error",
l: LogLevelError,
msg: "error",
},
{
c: f,
fmt: "fatal",
l: LogLevelFatal,
msg: "fatal",
},
}, lis)
ResetLogCallback()
lis = []logItem{}
Log(nil, LogLevelError, "test error log\n")
require.Equal(t, []logItem{}, lis)
lcs := []Classer{}
SetLogCallback(func(c Classer, l LogLevel, fmt, msg string) {
if c != nil {
lcs = append(lcs, c)
}
})
classers.del(f)
lcs = []Classer{}
Log(f, LogLevelWarning, "")
require.Len(t, lcs, 1)
require.IsType(t, &UnknownClasser{}, lcs[0])
}