1package log
2
3import (
4	"fmt"
5	"testing"
6)
7
8func TestFieldString(t *testing.T) {
9	testCases := []struct {
10		field    Field
11		expected string
12	}{
13		{
14			field:    String("key", "value"),
15			expected: "key:value",
16		},
17		{
18			field:    Bool("key", true),
19			expected: "key:true",
20		},
21		{
22			field:    Int("key", 5),
23			expected: "key:5",
24		},
25		{
26			field:    Error(fmt.Errorf("err msg")),
27			expected: "error:err msg",
28		},
29		{
30			field:    Error(nil),
31			expected: "error:<nil>",
32		},
33		{
34			field:    Noop(),
35			expected: ":<nil>",
36		},
37	}
38	for i, tc := range testCases {
39		if str := tc.field.String(); str != tc.expected {
40			t.Errorf("%d: expected '%s', got '%s'", i, tc.expected, str)
41		}
42	}
43}
44
45func TestNoopDoesNotMarshal(t *testing.T) {
46	mockEncoder := struct {
47		Encoder
48	}{}
49	f := Noop()
50	f.Marshal(mockEncoder) // panics if any Encoder method is invoked
51}
52