gojay

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

commit c135fe6615f52b48d922c0a49c88a78bca7253a3
parent 7c729c5d9e969a2cb7528cd0c4a0382030a26439
Author: francoispqt <francois@parquet.ninja>
Date:   Sun, 13 May 2018 17:54:51 +0800

add tests for array decoding

Diffstat:
Mdecode_array.go | 2+-
Mdecode_array_test.go | 32++++++++++++++++++++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/decode_array.go b/decode_array.go @@ -40,7 +40,7 @@ func (dec *Decoder) decodeArray(arr UnmarshalerArray) (int, error) { } n++ } - return dec.cursor, nil + return 0, InvalidJSONError("Invalid JSON could not find array closing bracket") case 'n': // is null dec.cursor++ diff --git a/decode_array_test.go b/decode_array_test.go @@ -241,6 +241,38 @@ func TestUnmarshalArrays(t *testing.T) { } } +func TestDecodeArrayEmpty(t *testing.T) { + v := new(testDecodeSlice) + dec := NewDecoder(strings.NewReader("")) + err := dec.Decode(v) + assert.NotNil(t, err, "err should not be nil") + assert.IsType(t, InvalidJSONError(""), err, "err should be of type InvalidJSONError") +} + +func TestDecodeArrayInvalidJSONError(t *testing.T) { + v := new(testSliceStrings) + dec := NewDecoder(strings.NewReader(`["test",""`)) + err := dec.Decode(v) + assert.NotNil(t, err, "err should not be nil") + assert.IsType(t, InvalidJSONError(""), err, "err should be of type InvalidJSONError") +} + +func TestDecodeArrayInvalidJSONError2(t *testing.T) { + v := new(testSliceStrings) + dec := NewDecoder(strings.NewReader(`["test","\\""]`)) + err := dec.Decode(v) + assert.NotNil(t, err, "err should not be nil") + assert.IsType(t, InvalidJSONError(""), err, "err should be of type InvalidJSONError") +} + +func TestDecodeArraySkipError(t *testing.T) { + v := new(testDecodeSlice) + dec := NewDecoder(strings.NewReader("34fef")) + err := dec.Decode(v) + assert.NotNil(t, err, "err should not be nil") + assert.IsType(t, InvalidJSONError(""), err, "err should be of type InvalidJSONError") +} + func TestDecodeArrayNullError(t *testing.T) { v := new(testDecodeSlice) dec := NewDecoder(strings.NewReader("nall"))