jsoniter_null_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package jsoniter
  2. import (
  3. "testing"
  4. "github.com/json-iterator/go/require"
  5. "bytes"
  6. )
  7. func Test_read_null(t *testing.T) {
  8. should := require.New(t)
  9. iter := ParseString(`null`)
  10. should.True(iter.ReadNil())
  11. iter = ParseString(`null`)
  12. should.Nil(iter.Read())
  13. iter = ParseString(`null`)
  14. any, err := UnmarshalAnyFromString(`null`)
  15. should.Nil(err)
  16. should.Equal(0, any.ToInt())
  17. should.Equal(float64(0), any.ToFloat64())
  18. should.Equal("", any.ToString())
  19. should.False(any.ToBool())
  20. }
  21. func Test_write_null(t *testing.T) {
  22. should := require.New(t)
  23. buf := &bytes.Buffer{}
  24. stream := NewStream(buf, 4096)
  25. stream.WriteNil()
  26. stream.Flush()
  27. should.Nil(stream.Error)
  28. should.Equal("null", buf.String())
  29. }
  30. func Test_encode_null(t *testing.T) {
  31. should := require.New(t)
  32. str, err := MarshalToString(nil)
  33. should.Nil(err)
  34. should.Equal("null", str)
  35. }
  36. func Test_decode_null_object(t *testing.T) {
  37. iter := ParseString(`[null,"a"]`)
  38. iter.ReadArray()
  39. if iter.ReadObject() != "" {
  40. t.FailNow()
  41. }
  42. iter.ReadArray()
  43. if iter.ReadString() != "a" {
  44. t.FailNow()
  45. }
  46. }
  47. func Test_decode_null_array(t *testing.T) {
  48. iter := ParseString(`[null,"a"]`)
  49. iter.ReadArray()
  50. if iter.ReadArray() != false {
  51. t.FailNow()
  52. }
  53. iter.ReadArray()
  54. if iter.ReadString() != "a" {
  55. t.FailNow()
  56. }
  57. }
  58. func Test_decode_null_string(t *testing.T) {
  59. should := require.New(t)
  60. iter := ParseString(`[null,"a"]`)
  61. should.True(iter.ReadArray())
  62. should.True(iter.ReadNil())
  63. should.True(iter.ReadArray())
  64. should.Equal("a", iter.ReadString())
  65. }
  66. func Test_decode_null_skip(t *testing.T) {
  67. iter := ParseString(`[null,"a"]`)
  68. iter.ReadArray()
  69. iter.Skip()
  70. iter.ReadArray()
  71. if iter.ReadString() != "a" {
  72. t.FailNow()
  73. }
  74. }