1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package zap
22
23 import (
24 "testing"
25
26 "go.uber.org/zap/zapcore"
27
28 "github.com/stretchr/testify/assert"
29 )
30
31 func TestRegisterDefaultEncoders(t *testing.T) {
32 testEncodersRegistered(t, "console", "json")
33 }
34
35 func TestRegisterEncoder(t *testing.T) {
36 testEncoders(func() {
37 assert.NoError(t, RegisterEncoder("foo", newNilEncoder), "expected to be able to register the encoder foo")
38 testEncodersRegistered(t, "foo")
39 })
40 }
41
42 func TestDuplicateRegisterEncoder(t *testing.T) {
43 testEncoders(func() {
44 assert.NoError(t, RegisterEncoder("foo", newNilEncoder), "expected to be able to register the encoder foo")
45 assert.Error(t, RegisterEncoder("foo", newNilEncoder), "expected an error when registering an encoder with the same name twice")
46 })
47 }
48
49 func TestRegisterEncoderNoName(t *testing.T) {
50 assert.Equal(t, errNoEncoderNameSpecified, RegisterEncoder("", newNilEncoder), "expected an error when registering an encoder with no name")
51 }
52
53 func TestNewEncoder(t *testing.T) {
54 testEncoders(func() {
55 assert.NoError(t, RegisterEncoder("foo", newNilEncoder), "expected to be able to register the encoder foo")
56 encoder, err := newEncoder("foo", zapcore.EncoderConfig{})
57 assert.NoError(t, err, "could not create an encoder for the registered name foo")
58 assert.Nil(t, encoder, "the encoder from newNilEncoder is not nil")
59 })
60 }
61
62 func TestNewEncoderNotRegistered(t *testing.T) {
63 _, err := newEncoder("foo", zapcore.EncoderConfig{})
64 assert.Error(t, err, "expected an error when trying to create an encoder of an unregistered name")
65 }
66
67 func TestNewEncoderNoName(t *testing.T) {
68 _, err := newEncoder("", zapcore.EncoderConfig{})
69 assert.Equal(t, errNoEncoderNameSpecified, err, "expected an error when creating an encoder with no name")
70 }
71
72 func testEncoders(f func()) {
73 existing := _encoderNameToConstructor
74 _encoderNameToConstructor = make(map[string]func(zapcore.EncoderConfig) (zapcore.Encoder, error))
75 defer func() { _encoderNameToConstructor = existing }()
76 f()
77 }
78
79 func testEncodersRegistered(t *testing.T, names ...string) {
80 assert.Len(t, _encoderNameToConstructor, len(names), "the expected number of registered encoders does not match the actual number")
81 for _, name := range names {
82 assert.NotNil(t, _encoderNameToConstructor[name], "no encoder is registered for name %s", name)
83 }
84 }
85
86 func newNilEncoder(_ zapcore.EncoderConfig) (zapcore.Encoder, error) {
87 return nil, nil
88 }
89
View as plain text