| package jsoniter |
| |
| import ( |
| "bytes" |
| "github.com/json-iterator/go/require" |
| "testing" |
| ) |
| |
| func Test_read_null(t *testing.T) { |
| should := require.New(t) |
| iter := ParseString(`null`) |
| should.True(iter.ReadNil()) |
| iter = ParseString(`null`) |
| should.Nil(iter.Read()) |
| iter = ParseString(`null`) |
| any, err := UnmarshalAnyFromString(`null`) |
| should.Nil(err) |
| should.Equal(0, any.ToInt()) |
| should.Equal(float64(0), any.ToFloat64()) |
| should.Equal("", any.ToString()) |
| should.False(any.ToBool()) |
| } |
| |
| func Test_write_null(t *testing.T) { |
| should := require.New(t) |
| buf := &bytes.Buffer{} |
| stream := NewStream(buf, 4096) |
| stream.WriteNil() |
| stream.Flush() |
| should.Nil(stream.Error) |
| should.Equal("null", buf.String()) |
| } |
| |
| func Test_encode_null(t *testing.T) { |
| should := require.New(t) |
| str, err := MarshalToString(nil) |
| should.Nil(err) |
| should.Equal("null", str) |
| } |
| |
| func Test_decode_null_object(t *testing.T) { |
| should := require.New(t) |
| iter := ParseString(`[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(UnmarshalFromString("[null]", &objs)) |
| should.Len(objs, 1) |
| } |
| |
| func Test_decode_null_array(t *testing.T) { |
| iter := ParseString(`[null,"a"]`) |
| iter.ReadArray() |
| if iter.ReadArray() != false { |
| t.FailNow() |
| } |
| iter.ReadArray() |
| if iter.ReadString() != "a" { |
| t.FailNow() |
| } |
| } |
| |
| func Test_decode_null_string(t *testing.T) { |
| should := require.New(t) |
| iter := ParseString(`[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 := ParseString(`[null,"a"]`) |
| iter.ReadArray() |
| iter.Skip() |
| iter.ReadArray() |
| if iter.ReadString() != "a" { |
| t.FailNow() |
| } |
| } |