mirror of
https://github.com/netbirdio/easyjson.git
synced 2026-05-22 18:44:42 -07:00
f0a000e7a8
* tests: don't ignore errors, verify them carefully * fix unescaping of \\\\\" and such sequences * tests: add Unmarshal test cases for escaped sequences
91 lines
1.6 KiB
Go
91 lines
1.6 KiB
Go
package tests
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/mailru/easyjson"
|
|
)
|
|
|
|
func TestStrFieldsUnescaping(t *testing.T) {
|
|
cases := []struct {
|
|
data string
|
|
exp EscStringStruct
|
|
}{
|
|
{
|
|
data: `{}`,
|
|
exp: EscStringStruct{},
|
|
},
|
|
{
|
|
data: `{"a": "\""}`,
|
|
exp: EscStringStruct{A: `"`},
|
|
},
|
|
{
|
|
data: `{"a": "\\"}`,
|
|
exp: EscStringStruct{A: `\`},
|
|
},
|
|
{
|
|
data: `{"a": "\\\""}`,
|
|
exp: EscStringStruct{A: `\"`},
|
|
},
|
|
{
|
|
data: `{"a": "\\\\'"}`,
|
|
exp: EscStringStruct{A: `\\'`},
|
|
},
|
|
{
|
|
data: `{"a": "\t\\\nx\\\""}`,
|
|
exp: EscStringStruct{A: "\t\\\nx\\\""},
|
|
},
|
|
{
|
|
data: `{"a": "\r\n"}`,
|
|
exp: EscStringStruct{A: "\r\n"},
|
|
},
|
|
{
|
|
data: `{"a": "\r\n\u4e2D\u56fD\\\""}`,
|
|
exp: EscStringStruct{A: "\r\n中国\\\""},
|
|
},
|
|
}
|
|
|
|
for i, c := range cases {
|
|
var val EscStringStruct
|
|
err := easyjson.Unmarshal([]byte(c.data), &val)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if !reflect.DeepEqual(val, c.exp) {
|
|
t.Errorf("[%d] TestStrFieldsUnescaping(): got=%q, exp=%q", i, val, c.exp)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestIntFieldsUnescaping(t *testing.T) {
|
|
cases := []struct {
|
|
data string
|
|
exp EscIntStruct
|
|
}{
|
|
{
|
|
data: `{}`,
|
|
exp: EscIntStruct{A: 0},
|
|
},
|
|
{
|
|
data: `{"a": "1"}`,
|
|
exp: EscIntStruct{A: 1},
|
|
},
|
|
{
|
|
data: `{"a": "\u0032"}`,
|
|
exp: EscIntStruct{A: 2},
|
|
},
|
|
}
|
|
|
|
for i, c := range cases {
|
|
var val EscIntStruct
|
|
err := easyjson.Unmarshal([]byte(c.data), &val)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if !reflect.DeepEqual(val, c.exp) {
|
|
t.Errorf("[%d] TestIntFieldsUnescaping(): got=%v, exp=%v", i, val, c.exp)
|
|
}
|
|
}
|
|
}
|