You've already forked json-iterator
mirror of
https://github.com/json-iterator/go.git
synced 2025-06-15 22:50:24 +02:00
consolidate more tests
This commit is contained in:
81
misc_tests/jsoniter_object_test.go
Normal file
81
misc_tests/jsoniter_object_test.go
Normal file
@ -0,0 +1,81 @@
|
||||
package misc_tests
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/json-iterator/go"
|
||||
)
|
||||
|
||||
func Test_empty_object(t *testing.T) {
|
||||
should := require.New(t)
|
||||
iter := jsoniter.ParseString(jsoniter.ConfigDefault, `{}`)
|
||||
field := iter.ReadObject()
|
||||
should.Equal("", field)
|
||||
iter = jsoniter.ParseString(jsoniter.ConfigDefault, `{}`)
|
||||
iter.ReadObjectCB(func(iter *jsoniter.Iterator, field string) bool {
|
||||
should.FailNow("should not call")
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
func Test_one_field(t *testing.T) {
|
||||
should := require.New(t)
|
||||
iter := jsoniter.ParseString(jsoniter.ConfigDefault, `{"a": "stream"}`)
|
||||
field := iter.ReadObject()
|
||||
should.Equal("a", field)
|
||||
value := iter.ReadString()
|
||||
should.Equal("stream", value)
|
||||
field = iter.ReadObject()
|
||||
should.Equal("", field)
|
||||
iter = jsoniter.ParseString(jsoniter.ConfigDefault, `{"a": "stream"}`)
|
||||
should.True(iter.ReadObjectCB(func(iter *jsoniter.Iterator, field string) bool {
|
||||
should.Equal("a", field)
|
||||
iter.Skip()
|
||||
return true
|
||||
}))
|
||||
|
||||
}
|
||||
|
||||
func Test_two_field(t *testing.T) {
|
||||
should := require.New(t)
|
||||
iter := jsoniter.ParseString(jsoniter.ConfigDefault, `{ "a": "stream" , "c": "d" }`)
|
||||
field := iter.ReadObject()
|
||||
should.Equal("a", field)
|
||||
value := iter.ReadString()
|
||||
should.Equal("stream", value)
|
||||
field = iter.ReadObject()
|
||||
should.Equal("c", field)
|
||||
value = iter.ReadString()
|
||||
should.Equal("d", value)
|
||||
field = iter.ReadObject()
|
||||
should.Equal("", field)
|
||||
iter = jsoniter.ParseString(jsoniter.ConfigDefault, `{"field1": "1", "field2": 2}`)
|
||||
for field := iter.ReadObject(); field != ""; field = iter.ReadObject() {
|
||||
switch field {
|
||||
case "field1":
|
||||
iter.ReadString()
|
||||
case "field2":
|
||||
iter.ReadInt64()
|
||||
default:
|
||||
iter.ReportError("bind object", "unexpected field")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Test_write_object(t *testing.T) {
|
||||
should := require.New(t)
|
||||
buf := &bytes.Buffer{}
|
||||
stream := jsoniter.NewStream(jsoniter.Config{IndentionStep: 2}.Froze(), buf, 4096)
|
||||
stream.WriteObjectStart()
|
||||
stream.WriteObjectField("hello")
|
||||
stream.WriteInt(1)
|
||||
stream.WriteMore()
|
||||
stream.WriteObjectField("world")
|
||||
stream.WriteInt(2)
|
||||
stream.WriteObjectEnd()
|
||||
stream.Flush()
|
||||
should.Nil(stream.Error)
|
||||
should.Equal("{\n \"hello\": 1,\n \"world\": 2\n}", buf.String())
|
||||
}
|
Reference in New Issue
Block a user