-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_test.go
109 lines (82 loc) · 2.28 KB
/
main_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package gojsonfieldmap
import (
"fmt"
"testing"
)
type simpleObject struct {
Name string `json:"Name"`
Value string `json:"Value"`
}
type complexRoot struct {
SomeValue string `json:"Thing"`
Children simpleObject `json:"Children"`
}
type slicedChild struct {
StringSlice []string `json:"stringSlice"`
ObjectSlice []simpleObject `json:"objectSlice"`
IntSlice []int `json:"intSlice"`
}
type untaggedChild struct {
TaggedItem string `json:"tagged"`
UntaggedItem string
}
type emptyStruct struct {
}
type embeddedTest struct {
simpleObject
EmbeddedWorks string `json:"embedded"`
}
func TestStandardObject(t *testing.T) {
object := []simpleObject{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Standard: " + output)
if output != `{"Name":1,"Value":1}` {
t.Fatal("Invalid mapping retured for simple object!")
}
}
func TestComplexObject(t *testing.T) {
object := complexRoot{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Complex: " + output)
if output != `{"Thing":1,"Children":{"Name":1,"Value":1}}` {
t.Fatal("Invalid mapping retured for complex object!")
}
}
func TestSlicedChildren(t *testing.T) {
object := slicedChild{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Slice Children: " + output)
if output != `{"stringSlice":1,"objectSlice":{"Name":1,"Value":1},"intSlice":1}` {
t.Fatal("Invalid mapping retured for slice children object!")
}
}
func TestUntaggedChildren(t *testing.T) {
object := untaggedChild{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Untagged Children: " + output)
if output != `{"tagged":1}` {
t.Fatal("Invalid mapping retured for untagged children object!")
}
}
func TestEmptyObject(t *testing.T) {
object := emptyStruct{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Untagged Children: " + output)
if output != `{}` {
t.Fatal("Invalid mapping retured for untagged children object!")
}
}
func TestNil(t *testing.T) {
output := GetJSONObjectFieldMap(nil)
if output != `{}` {
t.Fatal("Invalid nil response.")
}
}
func TestEmbedded(t *testing.T) {
object := embeddedTest{}
output := GetJSONObjectFieldMap(object)
fmt.Println("Embedded: " + output)
if output != `{"Name":1,"Value":1,"embedded":1}` {
t.Fatal("Invalid mapping retured for simple object!")
}
}