1 package mxj
2
3 import (
4 "encoding/json"
5 "fmt"
6 "testing"
7 )
8
9 func TestAnyXmlHeader(t *testing.T) {
10 fmt.Println("\n---------------- anyxml_test.go ...")
11 }
12
13 var anydata = []byte(`[
14 {
15 "somekey": "somevalue"
16 },
17 {
18 "somekey": "somevalue"
19 },
20 {
21 "somekey": "somevalue",
22 "someotherkey": "someothervalue"
23 },
24 "string",
25 3.14159265,
26 true
27 ]`)
28
29 type MyStruct struct {
30 Somekey string `xml:"somekey"`
31 B float32 `xml:"floatval"`
32 }
33
34 func TestAnyXml(t *testing.T) {
35 var i interface{}
36 err := json.Unmarshal(anydata, &i)
37 if err != nil {
38 t.Fatal(err)
39 }
40 x, err := AnyXml(i)
41 if err != nil {
42 t.Fatal(err)
43 }
44 fmt.Println("[]->x:", string(x))
45
46 a := []interface{}{"try", "this", 3.14159265, true}
47 x, err = AnyXml(a)
48 if err != nil {
49 t.Fatal(err)
50 }
51 fmt.Println("a->x:", string(x))
52
53 x, err = AnyXml(a, "myRootTag", "myElementTag")
54 if err != nil {
55 t.Fatal(err)
56 }
57 fmt.Println("a->x:", string(x))
58
59 x, err = AnyXml(3.14159625)
60 if err != nil {
61 t.Fatal(err)
62 }
63 fmt.Println("f->x:", string(x))
64
65 s := MyStruct{"somevalue", 3.14159625}
66 x, err = AnyXml(s)
67 if err != nil {
68 t.Fatal(err)
69 }
70 fmt.Println("s->x:", string(x))
71 }
72
73 func TestAnyXmlIndent(t *testing.T) {
74 var i interface{}
75 err := json.Unmarshal(anydata, &i)
76 if err != nil {
77 t.Fatal(err)
78 }
79 x, err := AnyXmlIndent(i, "", " ")
80 if err != nil {
81 t.Fatal(err)
82 }
83 fmt.Println("[]->x:\n", string(x))
84
85 a := []interface{}{"try", "this", 3.14159265, true}
86 x, err = AnyXmlIndent(a, "", " ")
87 if err != nil {
88 t.Fatal(err)
89 }
90 fmt.Println("a->x:\n", string(x))
91
92 x, err = AnyXmlIndent(3.14159625, "", " ")
93 if err != nil {
94 t.Fatal(err)
95 }
96 fmt.Println("f->x:\n", string(x))
97
98 x, err = AnyXmlIndent(3.14159625, "", " ", "myRootTag", "myElementTag")
99 if err != nil {
100 t.Fatal(err)
101 }
102 fmt.Println("f->x:\n", string(x))
103
104 s := MyStruct{"somevalue", 3.14159625}
105 x, err = AnyXmlIndent(s, "", " ")
106 if err != nil {
107 t.Fatal(err)
108 }
109 fmt.Println("s->x:\n", string(x))
110 }
111
112
113 func TestNilMap(t *testing.T) {
114 XmlDefaultEmptyElemSyntax()
115 checkval := "<root/>"
116 xmlout, err := AnyXml(nil, "root")
117 if err != nil {
118 t.Fatal(err)
119 }
120 if string(xmlout) != checkval {
121 fmt.Println(string(xmlout), "!=", checkval)
122 t.Fatal()
123 }
124
125 checkval = " <root/>"
126 xmlout, err = AnyXmlIndent(nil, " ", " ", "root")
127 if err != nil {
128 t.Fatal(err)
129 }
130 if string(xmlout) != checkval {
131 fmt.Println(string(xmlout), "!=", checkval)
132 t.Fatal()
133 }
134
135
136 XmlGoEmptyElemSyntax()
137 checkval = "<root></root>"
138 xmlout, err = AnyXml(nil, "root")
139 if err != nil {
140 t.Fatal(err)
141 }
142 if string(xmlout) != checkval {
143 fmt.Println(string(xmlout), "!=", checkval)
144 t.Fatal()
145 }
146
147 checkval = ` <root></root>`
148 xmlout, err = AnyXmlIndent(nil, " ", " ", "root")
149 if err != nil {
150 t.Fatal(err)
151 }
152 if string(xmlout) != checkval {
153 fmt.Println(string(xmlout), "!=", checkval)
154 t.Fatal()
155 }
156 XmlDefaultEmptyElemSyntax()
157 }
158
159 func TestNilValue(t *testing.T) {
160 val := map[string]interface{}{"toplevel": nil}
161 checkval := "<root><toplevel/></root>"
162
163 XmlDefaultEmptyElemSyntax()
164 xmlout, err := AnyXml(val, "root")
165 if err != nil {
166 t.Fatal(err)
167 }
168 if string(xmlout) != checkval {
169 fmt.Println(string(xmlout), "!=", checkval)
170 t.Fatal()
171 }
172
173 checkval = ` <root>
174 <toplevel/>
175 </root>`
176 xmlout, err = AnyXmlIndent(val, " ", " ", "root")
177 if err != nil {
178 t.Fatal(err)
179 }
180 if string(xmlout) != checkval {
181 fmt.Println(string(xmlout), "!=", checkval)
182 t.Fatal()
183 }
184
185 XmlGoEmptyElemSyntax()
186 checkval = "<root><toplevel></toplevel></root>"
187 xmlout, err = AnyXml(val, "root")
188 if err != nil {
189 t.Fatal(err)
190 }
191 if string(xmlout) != checkval {
192 fmt.Println(string(xmlout), "!=", checkval)
193 t.Fatal()
194 }
195
196 checkval = ` <root>
197 <toplevel></toplevel>
198 </root>`
199 xmlout, err = AnyXmlIndent(val, " ", " ", "root")
200 if err != nil {
201 t.Fatal(err)
202 }
203 if string(xmlout) != checkval {
204 fmt.Println(string(xmlout), "!=", checkval)
205 t.Fatal()
206 }
207 XmlDefaultEmptyElemSyntax()
208 }
209
View as plain text