| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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())
- }
|