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