commit c135fe6615f52b48d922c0a49c88a78bca7253a3
parent 7c729c5d9e969a2cb7528cd0c4a0382030a26439
Author: francoispqt <francois@parquet.ninja>
Date: Sun, 13 May 2018 17:54:51 +0800
add tests for array decoding
Diffstat:
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"))