52 lines
789 B
Go
52 lines
789 B
Go
package logger
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
type MockLogHandler struct {
|
|
logs []string
|
|
}
|
|
|
|
func (m *MockLogHandler) HandleLog(l string) {
|
|
m.logs = append(m.logs, l)
|
|
}
|
|
|
|
func TestLogWriter(t *testing.T) {
|
|
h := &MockLogHandler{}
|
|
w := NewLogWriter(4)
|
|
|
|
// Write some logs
|
|
w.Write([]byte("one")) // Gets dropped!
|
|
w.Write([]byte("two"))
|
|
w.Write([]byte("three"))
|
|
w.Write([]byte("four"))
|
|
w.Write([]byte("five"))
|
|
|
|
// Register a handler, sends old!
|
|
w.RegisterHandler(h)
|
|
|
|
w.Write([]byte("six"))
|
|
w.Write([]byte("seven"))
|
|
|
|
// Deregister
|
|
w.DeregisterHandler(h)
|
|
|
|
w.Write([]byte("eight"))
|
|
w.Write([]byte("nine"))
|
|
|
|
out := []string{
|
|
"two",
|
|
"three",
|
|
"four",
|
|
"five",
|
|
"six",
|
|
"seven",
|
|
}
|
|
for idx := range out {
|
|
if out[idx] != h.logs[idx] {
|
|
t.Fatalf("mismatch %v", h.logs)
|
|
}
|
|
}
|
|
}
|