1package formatter 2 3import ( 4 "reflect" 5 "testing" 6) 7 8type dummy struct { 9} 10 11func (d *dummy) Func1() string { 12 return "Func1" 13} 14 15func (d *dummy) func2() string { // nolint: unused 16 return "func2(should not be marshalled)" 17} 18 19func (d *dummy) Func3() (string, int) { 20 return "Func3(should not be marshalled)", -42 21} 22 23func (d *dummy) Func4() int { 24 return 4 25} 26 27type dummyType string 28 29func (d *dummy) Func5() dummyType { 30 return dummyType("Func5") 31} 32 33func (d *dummy) FullHeader() string { 34 return "FullHeader(should not be marshalled)" 35} 36 37var dummyExpected = map[string]interface{}{ 38 "Func1": "Func1", 39 "Func4": 4, 40 "Func5": dummyType("Func5"), 41} 42 43func TestMarshalMap(t *testing.T) { 44 d := dummy{} 45 m, err := marshalMap(&d) 46 if err != nil { 47 t.Fatal(err) 48 } 49 if !reflect.DeepEqual(dummyExpected, m) { 50 t.Fatalf("expected %+v, got %+v", 51 dummyExpected, m) 52 } 53} 54 55func TestMarshalMapBad(t *testing.T) { 56 if _, err := marshalMap(nil); err == nil { 57 t.Fatal("expected an error (argument is nil)") 58 } 59 if _, err := marshalMap(dummy{}); err == nil { 60 t.Fatal("expected an error (argument is non-pointer)") 61 } 62 x := 42 63 if _, err := marshalMap(&x); err == nil { 64 t.Fatal("expected an error (argument is a pointer to non-struct)") 65 } 66} 67