gojay

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

commit b81a0e0acffd9c87cb191d245cc600eb997068c0
parent 97c0800f960d021f3dc484812efe249489d29e9c
Author: francoispqt <francois@parquet.ninja>
Date:   Sun, 20 May 2018 00:47:04 +0800

add int decode tests

Diffstat:
Mdecode_number_int_test.go | 24++++++++++++++++++++++++
Mencode_stream.go | 14+++++++++-----
2 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/decode_number_int_test.go b/decode_number_int_test.go @@ -406,6 +406,12 @@ func TestDecoderInt64(t *testing.T) { errType: InvalidJSONError(""), }, { + name: "basic-exponent-err", + json: "3e", + expectedResult: 0, + err: true, + }, + { name: "error1", json: "132zz4", expectedResult: 0, @@ -628,6 +634,12 @@ func TestDecoderInt32(t *testing.T) { expectedResult: -800000, }, { + name: "basic-exponent-err", + json: "3e", + expectedResult: 0, + err: true, + }, + { name: "basic-float", json: "8.32 ", expectedResult: 8, @@ -876,6 +888,12 @@ func TestDecoderInt16(t *testing.T) { expectedResult: -8000, }, { + name: "basic-exponent-err", + json: "3e", + expectedResult: 0, + err: true, + }, + { name: "basic-float", json: "8.32 ", expectedResult: 8, @@ -1114,6 +1132,12 @@ func TestDecoderInt8(t *testing.T) { expectedResult: -80, }, { + name: "basic-exponent-err", + json: "3e", + expectedResult: 0, + err: true, + }, + { name: "basic-float", json: "8.32 ", expectedResult: 8, diff --git a/encode_stream.go b/encode_stream.go @@ -42,12 +42,16 @@ func (s *StreamEncoder) EncodeStream(m MarshalerStream) { go consume(s, s, m) for i := 1; i < s.nConsumer; i++ { s.mux.RLock() - ss := Stream.borrowEncoder(s.w) - ss.done = s.done - ss.buf = make([]byte, 0, 512) - ss.delimiter = s.delimiter + select { + case <-s.done: + default: + ss := Stream.borrowEncoder(s.w) + ss.done = s.done + ss.buf = make([]byte, 0, 512) + ss.delimiter = s.delimiter + go consume(s, ss, m) + } s.mux.RUnlock() - go consume(s, ss, m) } return }