...

Source file src/github.com/mailru/easyjson/tests/escaping_test.go

Documentation: github.com/mailru/easyjson/tests

     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