jsoniter_wrap_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package jsoniter
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. )
  6. func Test_wrap_and_valuetype_everything(t *testing.T) {
  7. should := require.New(t)
  8. var i interface{}
  9. any := Get([]byte("123"))
  10. // default of number type is float64
  11. i = float64(123)
  12. should.Equal(i, any.GetInterface())
  13. any = Wrap(int8(10))
  14. should.Equal(any.ValueType(), Number)
  15. should.Equal(any.LastError(), nil)
  16. // get interface is not int8 interface
  17. // i = int8(10)
  18. // should.Equal(i, any.GetInterface())
  19. any = Wrap(int16(10))
  20. should.Equal(any.ValueType(), Number)
  21. should.Equal(any.LastError(), nil)
  22. //i = int16(10)
  23. //should.Equal(i, any.GetInterface())
  24. any = Wrap(int32(10))
  25. should.Equal(any.ValueType(), Number)
  26. should.Equal(any.LastError(), nil)
  27. i = int32(10)
  28. should.Equal(i, any.GetInterface())
  29. any = Wrap(int64(10))
  30. should.Equal(any.ValueType(), Number)
  31. should.Equal(any.LastError(), nil)
  32. i = int64(10)
  33. should.Equal(i, any.GetInterface())
  34. any = Wrap(uint(10))
  35. should.Equal(any.ValueType(), Number)
  36. should.Equal(any.LastError(), nil)
  37. // not equal
  38. //i = uint(10)
  39. //should.Equal(i, any.GetInterface())
  40. any = Wrap(uint8(10))
  41. should.Equal(any.ValueType(), Number)
  42. should.Equal(any.LastError(), nil)
  43. // not equal
  44. // i = uint8(10)
  45. // should.Equal(i, any.GetInterface())
  46. any = Wrap(uint16(10))
  47. should.Equal(any.ValueType(), Number)
  48. should.Equal(any.LastError(), nil)
  49. any = Wrap(uint32(10))
  50. should.Equal(any.ValueType(), Number)
  51. should.Equal(any.LastError(), nil)
  52. i = uint32(10)
  53. should.Equal(i, any.GetInterface())
  54. any = Wrap(uint64(10))
  55. should.Equal(any.ValueType(), Number)
  56. should.Equal(any.LastError(), nil)
  57. i = uint64(10)
  58. should.Equal(i, any.GetInterface())
  59. any = Wrap(float32(10))
  60. should.Equal(any.ValueType(), Number)
  61. should.Equal(any.LastError(), nil)
  62. // not equal
  63. //i = float32(10)
  64. //should.Equal(i, any.GetInterface())
  65. any = Wrap(float64(10))
  66. should.Equal(any.ValueType(), Number)
  67. should.Equal(any.LastError(), nil)
  68. i = float64(10)
  69. should.Equal(i, any.GetInterface())
  70. any = Wrap(true)
  71. should.Equal(any.ValueType(), Bool)
  72. should.Equal(any.LastError(), nil)
  73. i = true
  74. should.Equal(i, any.GetInterface())
  75. any = Wrap(false)
  76. should.Equal(any.ValueType(), Bool)
  77. should.Equal(any.LastError(), nil)
  78. i = false
  79. should.Equal(i, any.GetInterface())
  80. any = Wrap(nil)
  81. should.Equal(any.ValueType(), Nil)
  82. should.Equal(any.LastError(), nil)
  83. i = nil
  84. should.Equal(i, any.GetInterface())
  85. stream := NewStream(ConfigDefault, nil, 32)
  86. any.WriteTo(stream)
  87. should.Equal("null", string(stream.Buffer()))
  88. should.Equal(any.LastError(), nil)
  89. any = Wrap(struct{ age int }{age: 1})
  90. should.Equal(any.ValueType(), Object)
  91. should.Equal(any.LastError(), nil)
  92. i = struct{ age int }{age: 1}
  93. should.Equal(i, any.GetInterface())
  94. any = Wrap(map[string]interface{}{"abc": 1})
  95. should.Equal(any.ValueType(), Object)
  96. should.Equal(any.LastError(), nil)
  97. i = map[string]interface{}{"abc": 1}
  98. should.Equal(i, any.GetInterface())
  99. any = Wrap("abc")
  100. i = "abc"
  101. should.Equal(i, any.GetInterface())
  102. should.Equal(nil, any.LastError())
  103. }