package misc_tests import ( "bytes" "io" "testing" "github.com/json-iterator/go" "github.com/stretchr/testify/require" ) func Test_read_null(t *testing.T) { should := require.New(t) iter := jsoniter.ParseString(jsoniter.ConfigDefault, `null`) should.True(iter.ReadNil()) iter = jsoniter.ParseString(jsoniter.ConfigDefault, `null`) should.Nil(iter.Read()) iter = jsoniter.ParseString(jsoniter.ConfigDefault, `navy`) iter.Read() should.True(iter.Error != nil && iter.Error != io.EOF) iter = jsoniter.ParseString(jsoniter.ConfigDefault, `navy`) iter.ReadNil() should.True(iter.Error != nil && iter.Error != io.EOF) } func Test_write_null(t *testing.T) { should := require.New(t) buf := &bytes.Buffer{} stream := jsoniter.NewStream(jsoniter.ConfigDefault, buf, 4096) stream.WriteNil() stream.Flush() should.Nil(stream.Error) should.Equal("null", buf.String()) } func Test_decode_null_object_field(t *testing.T) { should := require.New(t) iter := jsoniter.ParseString(jsoniter.ConfigDefault, `[null,"a"]`) iter.ReadArray() if iter.ReadObject() != "" { t.FailNow() } iter.ReadArray() if iter.ReadString() != "a" { t.FailNow() } type TestObject struct { Field string } objs := []TestObject{} should.Nil(jsoniter.UnmarshalFromString("[null]", &objs)) should.Len(objs, 1) } func Test_decode_null_array_element(t *testing.T) { should := require.New(t) iter := jsoniter.ParseString(jsoniter.ConfigDefault, `[null,"a"]`) should.True(iter.ReadArray()) should.True(iter.ReadNil()) should.True(iter.ReadArray()) should.Equal("a", iter.ReadString()) } func Test_decode_null_string(t *testing.T) { should := require.New(t) iter := jsoniter.ParseString(jsoniter.ConfigDefault, `[null,"a"]`) should.True(iter.ReadArray()) should.Equal("", iter.ReadString()) should.True(iter.ReadArray()) should.Equal("a", iter.ReadString()) } func Test_decode_null_skip(t *testing.T) { iter := jsoniter.ParseString(jsoniter.ConfigDefault, `[null,"a"]`) iter.ReadArray() iter.Skip() iter.ReadArray() if iter.ReadString() != "a" { t.FailNow() } }