jsoniter_null_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package jsoniter
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "github.com/json-iterator/go/require"
  6. "testing"
  7. )
  8. func Test_read_null(t *testing.T) {
  9. should := require.New(t)
  10. iter := ParseString(ConfigOfDefault, `null`)
  11. should.True(iter.ReadNil())
  12. iter = ParseString(ConfigOfDefault, `null`)
  13. should.Nil(iter.Read())
  14. iter = ParseString(ConfigOfDefault, `null`)
  15. any, err := UnmarshalAnyFromString(`null`)
  16. should.Nil(err)
  17. should.Equal(0, any.ToInt())
  18. should.Equal(float64(0), any.ToFloat64())
  19. should.Equal("", any.ToString())
  20. should.False(any.ToBool())
  21. }
  22. func Test_write_null(t *testing.T) {
  23. should := require.New(t)
  24. buf := &bytes.Buffer{}
  25. stream := NewStream(ConfigOfDefault, buf, 4096)
  26. stream.WriteNil()
  27. stream.Flush()
  28. should.Nil(stream.Error)
  29. should.Equal("null", buf.String())
  30. }
  31. func Test_encode_null(t *testing.T) {
  32. should := require.New(t)
  33. str, err := MarshalToString(nil)
  34. should.Nil(err)
  35. should.Equal("null", str)
  36. }
  37. func Test_decode_null_object(t *testing.T) {
  38. should := require.New(t)
  39. iter := ParseString(ConfigOfDefault, `[null,"a"]`)
  40. iter.ReadArray()
  41. if iter.ReadObject() != "" {
  42. t.FailNow()
  43. }
  44. iter.ReadArray()
  45. if iter.ReadString() != "a" {
  46. t.FailNow()
  47. }
  48. type TestObject struct {
  49. Field string
  50. }
  51. objs := []TestObject{}
  52. should.Nil(UnmarshalFromString("[null]", &objs))
  53. should.Len(objs, 1)
  54. }
  55. func Test_decode_null_array(t *testing.T) {
  56. iter := ParseString(ConfigOfDefault, `[null,"a"]`)
  57. iter.ReadArray()
  58. if iter.ReadArray() != false {
  59. t.FailNow()
  60. }
  61. iter.ReadArray()
  62. if iter.ReadString() != "a" {
  63. t.FailNow()
  64. }
  65. }
  66. func Test_decode_null_string(t *testing.T) {
  67. should := require.New(t)
  68. iter := ParseString(ConfigOfDefault, `[null,"a"]`)
  69. should.True(iter.ReadArray())
  70. should.Equal("", iter.ReadString())
  71. should.True(iter.ReadArray())
  72. should.Equal("a", iter.ReadString())
  73. }
  74. func Test_decode_null_skip(t *testing.T) {
  75. iter := ParseString(ConfigOfDefault, `[null,"a"]`)
  76. iter.ReadArray()
  77. iter.Skip()
  78. iter.ReadArray()
  79. if iter.ReadString() != "a" {
  80. t.FailNow()
  81. }
  82. }
  83. func Test_encode_nil_map(t *testing.T) {
  84. should := require.New(t)
  85. type Ttest map[string]string
  86. var obj1 Ttest
  87. output, err := json.Marshal(obj1)
  88. should.Nil(err)
  89. should.Equal("null", string(output))
  90. output, err = json.Marshal(&obj1)
  91. should.Nil(err)
  92. should.Equal("null", string(output))
  93. output, err = Marshal(obj1)
  94. should.Nil(err)
  95. should.Equal("null", string(output))
  96. output, err = Marshal(&obj1)
  97. should.Nil(err)
  98. should.Equal("null", string(output))
  99. }
  100. func Test_encode_nil_array(t *testing.T) {
  101. should := require.New(t)
  102. type Ttest []string
  103. var obj1 Ttest
  104. output, err := json.Marshal(obj1)
  105. should.Nil(err)
  106. should.Equal("null", string(output))
  107. output, err = json.Marshal(&obj1)
  108. should.Nil(err)
  109. should.Equal("null", string(output))
  110. output, err = Marshal(obj1)
  111. should.Nil(err)
  112. should.Equal("null", string(output))
  113. output, err = Marshal(&obj1)
  114. should.Nil(err)
  115. should.Equal("null", string(output))
  116. }