1 package tests
2
3 import (
4 "reflect"
5 "testing"
6
7 "github.com/mailru/easyjson"
8 )
9
10 func TestStrFieldsUnescaping(t *testing.T) {
11 cases := []struct {
12 data string
13 exp EscStringStruct
14 }{
15 {
16 data: `{}`,
17 exp: EscStringStruct{},
18 },
19 {
20 data: `{"a": "\""}`,
21 exp: EscStringStruct{A: `"`},
22 },
23 {
24 data: `{"a": "\\"}`,
25 exp: EscStringStruct{A: `\`},
26 },
27 {
28 data: `{"a": "\\\""}`,
29 exp: EscStringStruct{A: `\"`},
30 },
31 {
32 data: `{"a": "\\\\'"}`,
33 exp: EscStringStruct{A: `\\'`},
34 },
35 {
36 data: `{"a": "\t\\\nx\\\""}`,
37 exp: EscStringStruct{A: "\t\\\nx\\\""},
38 },
39 {
40 data: `{"a": "\r\n"}`,
41 exp: EscStringStruct{A: "\r\n"},
42 },
43 {
44 data: `{"a": "\r\n\u4e2D\u56fD\\\""}`,
45 exp: EscStringStruct{A: "\r\n中国\\\""},
46 },
47 }
48
49 for i, c := range cases {
50 var val EscStringStruct
51 err := easyjson.Unmarshal([]byte(c.data), &val)
52 if err != nil {
53 t.Error(err)
54 }
55 if !reflect.DeepEqual(val, c.exp) {
56 t.Errorf("[%d] TestStrFieldsUnescaping(): got=%q, exp=%q", i, val, c.exp)
57 }
58 }
59 }
60
61 func TestIntFieldsUnescaping(t *testing.T) {
62 cases := []struct {
63 data string
64 exp EscIntStruct
65 }{
66 {
67 data: `{}`,
68 exp: EscIntStruct{A: 0},
69 },
70 {
71 data: `{"a": "1"}`,
72 exp: EscIntStruct{A: 1},
73 },
74 {
75 data: `{"a": "\u0032"}`,
76 exp: EscIntStruct{A: 2},
77 },
78 }
79
80 for i, c := range cases {
81 var val EscIntStruct
82 err := easyjson.Unmarshal([]byte(c.data), &val)
83 if err != nil {
84 t.Error(err)
85 }
86 if !reflect.DeepEqual(val, c.exp) {
87 t.Errorf("[%d] TestIntFieldsUnescaping(): got=%v, exp=%v", i, val, c.exp)
88 }
89 }
90 }
91
View as plain text