1 package mxj
2
3 import (
4 "bytes"
5 "fmt"
6 "io"
7 "testing"
8 )
9
10 var jdata = []byte(`{ "key1":"string", "key2":34, "key3":true, "key4":"unsafe: <>&", "key5":null }`)
11 var jdata2 = []byte(`{ "key1":"string", "key2":34, "key3":true, "key4":"unsafe: <>&" },
12 { "key":"value in new JSON string" }`)
13
14 func TestJsonHeader(t *testing.T) {
15 fmt.Println("\n---------------- json_test.go ...")
16 }
17
18 func TestNewMapJson(t *testing.T) {
19
20 m, merr := NewMapJson(jdata)
21 if merr != nil {
22 t.Fatal("NewMapJson, merr:", merr.Error())
23 }
24
25 fmt.Println("NewMapJson, jdata:", string(jdata))
26 fmt.Printf("NewMapJson, m : %#v\n", m)
27 }
28
29 func TestNewMapJsonNumber(t *testing.T) {
30
31 JsonUseNumber = true
32
33 m, merr := NewMapJson(jdata)
34 if merr != nil {
35 t.Fatal("NewMapJson, merr:", merr.Error())
36 }
37
38 fmt.Println("NewMapJson, jdata:", string(jdata))
39 fmt.Printf("NewMapJson, m : %#v\n", m)
40
41 JsonUseNumber = false
42 }
43
44 func TestNewMapJsonError(t *testing.T) {
45
46 m, merr := NewMapJson(jdata[:len(jdata)-2])
47 if merr == nil {
48 t.Fatal("NewMapJsonError, m:", m)
49 }
50
51 fmt.Println("NewMapJsonError, jdata :", string(jdata[:len(jdata)-2]))
52 fmt.Println("NewMapJsonError, merror:", merr.Error())
53
54 newData := []byte(`{ "this":"is", "in":error }`)
55 m, merr = NewMapJson(newData)
56 if merr == nil {
57 t.Fatal("NewMapJsonError, m:", m)
58 }
59
60 fmt.Println("NewMapJsonError, newData :", string(newData))
61 fmt.Println("NewMapJsonError, merror :", merr.Error())
62 }
63
64 func TestNewMapJsonReader(t *testing.T) {
65
66 rdr := bytes.NewBuffer(jdata2)
67
68 for {
69 m, jb, merr := NewMapJsonReaderRaw(rdr)
70 if merr != nil && merr != io.EOF {
71 t.Fatal("NewMapJsonReader, merr:", merr.Error())
72 }
73 if merr == io.EOF {
74 break
75 }
76
77 fmt.Println("NewMapJsonReader, jb:", string(jb))
78 fmt.Printf("NewMapJsonReader, m : %#v\n", m)
79 }
80 }
81
82 func TestNewMapJsonReaderNumber(t *testing.T) {
83
84 JsonUseNumber = true
85
86 rdr := bytes.NewBuffer(jdata2)
87
88 for {
89 m, jb, merr := NewMapJsonReaderRaw(rdr)
90 if merr != nil && merr != io.EOF {
91 t.Fatal("NewMapJsonReader, merr:", merr.Error())
92 }
93 if merr == io.EOF {
94 break
95 }
96
97 fmt.Println("NewMapJsonReader, jb:", string(jb))
98 fmt.Printf("NewMapJsonReader, m : %#v\n", m)
99 }
100
101 JsonUseNumber = false
102 }
103
104 func TestJson(t *testing.T) {
105
106 m, _ := NewMapJson(jdata)
107
108 j, jerr := m.Json()
109 if jerr != nil {
110 t.Fatal("Json, jerr:", jerr.Error())
111 }
112
113 fmt.Println("Json, jdata:", string(jdata))
114 fmt.Println("Json, j :", string(j))
115
116 j, _ = m.Json(true)
117 fmt.Println("Json, j safe:", string(j))
118 }
119
120 func TestJsonWriter(t *testing.T) {
121 mv := Map(map[string]interface{}{"this": "is a", "float": 3.14159, "and": "a", "bool": true})
122
123 w := new(bytes.Buffer)
124 raw, err := mv.JsonWriterRaw(w)
125 if err != nil {
126 t.Fatal("err:", err.Error())
127 }
128
129 b := make([]byte, w.Len())
130 _, err = w.Read(b)
131 if err != nil {
132 t.Fatal("err:", err.Error())
133 }
134
135 fmt.Println("JsonWriter, raw:", string(raw))
136 fmt.Println("JsonWriter, b :", string(b))
137 }
138
View as plain text