1
0
mirror of https://github.com/json-iterator/go.git synced 2025-05-19 21:53:05 +02:00

fix tests

This commit is contained in:
Tao Wen 2017-02-12 22:49:45 +08:00
parent 9670a03165
commit 9d1feb5431
4 changed files with 20 additions and 25 deletions

View File

@ -49,7 +49,7 @@ func (any *nilAny) ToFloat64() float64 {
} }
func (any *nilAny) ToString() string { func (any *nilAny) ToString() string {
return "nil" return ""
} }
func (any *nilAny) WriteTo(stream *Stream) { func (any *nilAny) WriteTo(stream *Stream) {

View File

@ -197,7 +197,9 @@ func (iter *Iterator) skipFixedBytes(n int) {
if (iter.head >= iter.tail) { if (iter.head >= iter.tail) {
more := iter.head - iter.tail; more := iter.head - iter.tail;
if !iter.loadMore() { if !iter.loadMore() {
iter.reportError("skipFixedBytes", "unexpected end"); if more > 0 {
iter.reportError("skipFixedBytes", "unexpected end");
}
return return
} }
iter.head += more; iter.head += more;

View File

@ -3,6 +3,7 @@ package jsoniter
import ( import (
"io" "io"
"testing" "testing"
"github.com/json-iterator/go/require"
) )
func Test_string_end(t *testing.T) { func Test_string_end(t *testing.T) {
@ -89,52 +90,41 @@ func (reader *StagedReader) Read(p []byte) (n int, err error) {
} }
func Test_skip_string(t *testing.T) { func Test_skip_string(t *testing.T) {
should := require.New(t)
iter := ParseString(`"abc`) iter := ParseString(`"abc`)
iter.skipString() iter.skipString()
if iter.head != 1 { should.Equal(1, iter.head)
t.Fatal(iter.head)
}
iter = ParseString(`\""abc`) iter = ParseString(`\""abc`)
iter.skipString() iter.skipString()
if iter.head != 3 { should.Equal(3, iter.head)
t.Fatal(iter.head)
}
reader := &StagedReader{ reader := &StagedReader{
r1: `abc`, r1: `abc`,
r2: `"`, r2: `"`,
} }
iter = Parse(reader, 4096) iter = Parse(reader, 4096)
iter.skipString() iter.skipString()
if iter.head != 1 { should.Equal(1, iter.head)
t.Fatal(iter.head)
}
reader = &StagedReader{ reader = &StagedReader{
r1: `abc`, r1: `abc`,
r2: `1"`, r2: `1"`,
} }
iter = Parse(reader, 4096) iter = Parse(reader, 4096)
iter.skipString() iter.skipString()
if iter.head != 2 { should.Equal(2, iter.head)
t.Fatal(iter.head)
}
reader = &StagedReader{ reader = &StagedReader{
r1: `abc\`, r1: `abc\`,
r2: `"`, r2: `"`,
} }
iter = Parse(reader, 4096) iter = Parse(reader, 4096)
iter.skipString() iter.skipString()
if iter.Error != io.EOF { should.NotNil(iter.Error)
t.Fatal(iter.Error)
}
reader = &StagedReader{ reader = &StagedReader{
r1: `abc\`, r1: `abc\`,
r2: `""`, r2: `""`,
} }
iter = Parse(reader, 4096) iter = Parse(reader, 4096)
iter.skipString() iter.skipString()
if iter.head != 2 { should.Equal(2, iter.head)
t.Fatal(iter.head)
}
} }
func Test_skip_object(t *testing.T) { func Test_skip_object(t *testing.T) {

View File

@ -221,12 +221,11 @@ func Test_write_object(t *testing.T) {
should.Equal("{\n \"hello\":1,\n \"world\":2\n}", buf.String()) should.Equal("{\n \"hello\":1,\n \"world\":2\n}", buf.String())
} }
type TestObj struct {
Field1 string
Field2 uint64
}
func Benchmark_jsoniter_object(b *testing.B) { func Benchmark_jsoniter_object(b *testing.B) {
type TestObj struct {
Field1 string
Field2 uint64
}
for n := 0; n < b.N; n++ { for n := 0; n < b.N; n++ {
iter := ParseString(`{"field1": "1", "field2": 2}`) iter := ParseString(`{"field1": "1", "field2": 2}`)
obj := TestObj{} obj := TestObj{}
@ -244,6 +243,10 @@ func Benchmark_jsoniter_object(b *testing.B) {
} }
func Benchmark_json_object(b *testing.B) { func Benchmark_json_object(b *testing.B) {
type TestObj struct {
Field1 string
Field2 uint64
}
for n := 0; n < b.N; n++ { for n := 0; n < b.N; n++ {
result := TestObj{} result := TestObj{}
json.Unmarshal([]byte(`{"field1": "1", "field2": 2}`), &result) json.Unmarshal([]byte(`{"field1": "1", "field2": 2}`), &result)