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:
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