gojay

high performance JSON encoder/decoder with stream API for Golang
git clone git://git.lair.cx/gojay
Log | Files | Refs | README | LICENSE

commit fc25d4f3d0c21a6f27afdb199afacffcf1442b1d
parent f3045f9466d511bf6ff268f294a2dc999270feb1
Author: francoispqt <francois@parquet.ninja>
Date:   Sun,  6 May 2018 13:36:39 +0800

add tests for decoding embedded json directly

Diffstat:
Mdecode_embedded_json_test.go | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 57 insertions(+), 2 deletions(-)

diff --git a/decode_embedded_json_test.go b/decode_embedded_json_test.go @@ -1,6 +1,7 @@ package gojay import ( + "bytes" "strings" "testing" @@ -32,7 +33,7 @@ func (r *Request) NKeys() int { return 4 } -func TestDecodeEmbeddedJSON(t *testing.T) { +func TestDecodeEmbeddedJSONUnmarshalAPI(t *testing.T) { testCases := []struct { name string json []byte @@ -77,14 +78,68 @@ func TestDecodeEmbeddedJSON(t *testing.T) { for _, testCase := range testCases { t.Run(testCase.name, func(t *testing.T) { req := &Request{} - Unmarshal(testCase.json, req) + err := Unmarshal(testCase.json, req) t.Log(req) t.Log(string(req.params)) + assert.Nil(t, err, "err should be nil") assert.Equal(t, testCase.expectedEmbedded, string(req.params), "r.params should be equal to expectedEmbeddedResult") }) } } +func TestDecodeEmbeddedJSONDecodeAPI(t *testing.T) { + testCases := []struct { + name string + json []byte + expectedEmbedded string + }{ + { + name: "decode-basic-string", + json: []byte(`{"id":"someid","method":"getmydata","params":"raw data", "more":123}`), + expectedEmbedded: `"raw data"`, + }, + { + name: "decode-basic-int", + json: []byte(`{"id":"someid","method":"getmydata","params":12345, "more":123}`), + expectedEmbedded: `12345`, + }, + { + name: "decode-basic-int", + json: []byte(`{"id":"someid","method":"getmydata","params":true, "more":123}`), + expectedEmbedded: `true`, + }, + { + name: "decode-basic-int", + json: []byte(`{"id":"someid","method":"getmydata","params": false, "more":123}`), + expectedEmbedded: `false`, + }, + { + name: "decode-basic-int", + json: []byte(`{"id":"someid","method":"getmydata","params":null, "more":123}`), + expectedEmbedded: `null`, + }, + { + name: "decode-basic-object", + json: []byte(`{"id":"someid","method":"getmydata","params":{"example":"of raw data"}, "more":123}`), + expectedEmbedded: `{"example":"of raw data"}`, + }, + { + name: "decode-basic-object", + json: []byte(`{"id":"someid","method":"getmydata","params":[1,2,3], "more":123}`), + expectedEmbedded: `[1,2,3]`, + }, + } + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + ej := EmbeddedJSON([]byte{}) + dec := BorrowDecoder(bytes.NewReader(testCase.json)) + err := dec.Decode(&ej) + assert.Nil(t, err, "err should be nil") + assert.Equal(t, string(testCase.json), string(ej), "r.params should be equal to expectedEmbeddedResult") + }) + } +} + func TestDecodeEmbeededJSONNil(t *testing.T) { dec := BorrowDecoder(strings.NewReader(`"bar"`)) var ej *EmbeddedJSON