-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathjson_token_test.go
120 lines (115 loc) · 2.89 KB
/
json_token_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
110
111
112
113
114
115
116
117
118
119
120
package xjson
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
)
func TestInitStatus(t *testing.T) {
str := `{"name":"cj", "age":10}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestToken(t *testing.T) {
str := `{"name":"cj", "object":{"age":10, "sex":"girl"}}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestToken2(t *testing.T) {
str := `{"name":"cj", "object":{"age":10, "sex":"girl"},"list":[{"1":"a"},{"2":"b"}]}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestToken3(t *testing.T) {
str := `{"k":"89","name":true,"age":false,"value":12}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestToken4(t *testing.T) {
str := `{"k":null,"name":true,"age":false,"value":12, "x": null}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestToken5(t *testing.T) {
str := `{"k":"89","name":10.2}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}
func TestTokenErr(t *testing.T) {
str := `{"k":nul}`
_, err := Tokenize(str)
assert.NotNil(t, err)
str = `{"k":t}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":tr}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":tru}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":f}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":fa}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":fal}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":fals}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":n}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":nu}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":nul}`
_, err = Tokenize(str)
assert.NotNil(t, err)
str = `{"k":10.20.2}`
_, err = Tokenize(str)
assert.NotNil(t, err)
fmt.Println(err)
}
func TestEscapeToken(t *testing.T) {
str := `{"a":"a"}`
tokenize, err := Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
str = `{"a":"{\"a\":\"a\"}"}`
fmt.Println(str)
tokenize, err = Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
str = `{"a":"{\"a\":[1.2]}"}`
fmt.Println(str)
tokenize, err = Tokenize(str)
assert.Nil(t, err)
for _, tokenType := range tokenize {
fmt.Printf("%s %s\n", tokenType.T, tokenType.Value)
}
}