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