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