-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathformatter_test.go
139 lines (101 loc) · 3.43 KB
/
formatter_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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package value
import (
"os"
"testing"
"github.com/echocat/slf4g/native/formatter"
"github.com/echocat/slf4g/internal/test/assert"
"github.com/echocat/slf4g/native/consumer"
)
func Test_NewFormatter(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer)
assert.ToBeNotNil(t, instance)
assert.ToBeSame(t, givenConsumer, instance.Target)
assert.ToBeNil(t, instance.Codec)
}
func Test_NewFormatter_customized(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer, func(formatter *Formatter) {
formatter.Codec = NoopFormatterCodec()
})
assert.ToBeNotNil(t, instance)
assert.ToBeSame(t, givenConsumer, instance.Target)
assert.ToBeSame(t, NoopFormatterCodec(), instance.Codec)
}
func Test_Formatter_UnmarshalText(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer)
actualErr := instance.UnmarshalText([]byte("text"))
assert.ToBeNoError(t, actualErr)
assert.ToBeEqual(t, formatter.NewText(), givenConsumer.Formatter)
}
func Test_Formatter_UnmarshalText_failing(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer)
actualErr := instance.UnmarshalText([]byte("foo"))
assert.ToBeMatching(t, "^unknown log format: foo$", actualErr)
assert.ToBeSame(t, mockFormatterCodecFormatter, givenConsumer.Formatter)
}
func Test_Formatter_String(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = formatter.NewText()
})
instance := NewFormatter(givenConsumer)
actual := instance.String()
assert.ToBeEqual(t, "text", actual)
}
func Test_Formatter_String_withEmptyTarget(t *testing.T) {
instance := NewFormatter(nil)
actual := instance.String()
assert.ToBeEqual(t, "", actual)
}
func Test_Formatter_String_failing(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer)
actual := instance.String()
assert.ToBeEqual(t, "ERR-unknown log formatter: formatter.Func", actual)
}
func Test_Formatter_Get(t *testing.T) {
givenConsumer := consumer.NewWriter(os.Stderr, func(writer *consumer.Writer) {
writer.Formatter = mockFormatterCodecFormatter
})
instance := NewFormatter(givenConsumer)
actual := instance.Get()
assert.ToBeSame(t, mockFormatterCodecFormatter, actual)
}
func Test_Formatter_getCodec_explicit(t *testing.T) {
instance := &Formatter{
Codec: &mockFormatterCodec{},
}
actual := instance.getCodec()
assert.ToBeSame(t, instance.Codec, actual)
}
func Test_Formatter_getCodec_default(t *testing.T) {
instance := &Formatter{
Codec: nil,
}
actual := instance.getCodec()
assert.ToBeEqual(t, DefaultFormatterCodec, actual)
}
func Test_Formatter_getCodec_noop(t *testing.T) {
old := DefaultFormatterCodec
defer func() {
DefaultFormatterCodec = old
}()
DefaultFormatterCodec = nil
instance := &Formatter{
Codec: nil,
}
actual := instance.getCodec()
assert.ToBeEqual(t, NoopFormatterCodec(), actual)
}