This repository has been archived by the owner on Oct 29, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcommon_test.go
90 lines (70 loc) · 1.97 KB
/
common_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/**
* CommonLog
*
* Copyright © 2015 Trevor N. Suarez (Rican7)
*/
package commonlog
import (
"reflect"
"testing"
"github.com/Rican7/commonlog/level"
)
/**
* Mocks
*/
type levelLoggerFunc func(level.LogLevel, string, ...interface{})
func (f levelLoggerFunc) Log(l level.LogLevel, msg string, args ...interface{}) {
f(l, msg, args)
}
type lastStateLogger struct {
lastLevel *level.LogLevel
lastMessage *string
lastArgs *[]interface{}
}
func (s *lastStateLogger) Clear() {
s = &lastStateLogger{}
}
func (s *lastStateLogger) Log(l level.LogLevel, msg string, args ...interface{}) {
s.lastLevel = &l
s.lastMessage = &msg
s.lastArgs = &args
}
/**
* Tests
*/
func TestNewLogger(t *testing.T) {
ll := func(level.LogLevel, string, ...interface{}) {}
logger := NewLogger(levelLoggerFunc(ll))
if _, ok := logger.(Logger); !ok {
t.Errorf("%v doesn't satisfy the Logger interface", logger)
}
}
func TestLevelMethods(t *testing.T) {
const testMessage = "What"
testArgs := []interface{}{1, 2, 3}
// Setup a map of our expected levels and matching method calls
calls := map[level.LogLevel]func(Logger, string, ...interface{}){
level.EMERGENCY: Logger.Emergency,
level.ALERT: Logger.Alert,
level.CRITICAL: Logger.Critical,
level.ERROR: Logger.Error,
level.WARNING: Logger.Warning,
level.NOTICE: Logger.Notice,
level.INFO: Logger.Info,
level.DEBUG: Logger.Debug,
}
stateLogger := &lastStateLogger{}
logger := &common{stateLogger}
for lvl, call := range calls {
call(logger, testMessage, testArgs...)
if *stateLogger.lastLevel != lvl {
t.Errorf("Logged level %q does not match expected %q", stateLogger.lastLevel, lvl)
}
if *stateLogger.lastMessage != testMessage {
t.Errorf("Logged message %q does not match expected %q", stateLogger.lastMessage, testMessage)
}
if !reflect.DeepEqual(*stateLogger.lastArgs, testArgs) {
t.Errorf("Logged args %q does not match expected %q", stateLogger.lastArgs, testArgs)
}
}
}