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) } } }