jsoniter_any_float_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package any_tests
  2. import (
  3. "testing"
  4. "github.com/json-iterator/go"
  5. "github.com/stretchr/testify/require"
  6. )
  7. var floatConvertMap = map[string]float64{
  8. "null": 0,
  9. "true": 1,
  10. "false": 0,
  11. `"true"`: 0,
  12. `"false"`: 0,
  13. "1e1": 10,
  14. "1e+1": 10,
  15. "1e-1": .1,
  16. "1E1": 10,
  17. "1E+1": 10,
  18. "1E-1": .1,
  19. "-1e1": -10,
  20. "-1e+1": -10,
  21. "-1e-1": -.1,
  22. "-1E1": -10,
  23. "-1E+1": -10,
  24. "-1E-1": -.1,
  25. `"1e1"`: 10,
  26. `"1e+1"`: 10,
  27. `"1e-1"`: .1,
  28. `"1E1"`: 10,
  29. `"1E+1"`: 10,
  30. `"1E-1"`: .1,
  31. `"-1e1"`: -10,
  32. `"-1e+1"`: -10,
  33. `"-1e-1"`: -.1,
  34. `"-1E1"`: -10,
  35. `"-1E+1"`: -10,
  36. `"-1E-1"`: -.1,
  37. "123": 123,
  38. `"123true"`: 123,
  39. `"+"`: 0,
  40. `"-"`: 0,
  41. `"-123true"`: -123,
  42. `"-99.9true"`: -99.9,
  43. "0": 0,
  44. `"0"`: 0,
  45. "-1": -1,
  46. "1.1": 1.1,
  47. "0.0": 0,
  48. "-1.1": -1.1,
  49. `"+1.1"`: 1.1,
  50. `""`: 0,
  51. "[1,2]": 1,
  52. "[]": 0,
  53. "{}": 0,
  54. `{"abc":1}`: 0,
  55. }
  56. func Test_read_any_to_float(t *testing.T) {
  57. should := require.New(t)
  58. for k, v := range floatConvertMap {
  59. any := jsoniter.Get([]byte(k))
  60. should.Equal(float64(v), any.ToFloat64(), "the original val is "+k)
  61. }
  62. for k, v := range floatConvertMap {
  63. any := jsoniter.Get([]byte(k))
  64. should.Equal(float32(v), any.ToFloat32(), "the original val is "+k)
  65. }
  66. }
  67. func Test_read_float_to_any(t *testing.T) {
  68. should := require.New(t)
  69. any := jsoniter.WrapFloat64(12.3)
  70. anyFloat64 := float64(12.3)
  71. any2 := jsoniter.WrapFloat64(-1.1)
  72. should.Equal(float64(12.3), any.ToFloat64())
  73. should.True(any.ToBool())
  74. should.Equal(float32(anyFloat64), any.ToFloat32())
  75. should.Equal(int(anyFloat64), any.ToInt())
  76. should.Equal(int32(anyFloat64), any.ToInt32())
  77. should.Equal(int64(anyFloat64), any.ToInt64())
  78. should.Equal(uint(anyFloat64), any.ToUint())
  79. should.Equal(uint32(anyFloat64), any.ToUint32())
  80. should.Equal(uint64(anyFloat64), any.ToUint64())
  81. should.Equal(uint(0), any2.ToUint())
  82. should.Equal(uint32(0), any2.ToUint32())
  83. should.Equal(uint64(0), any2.ToUint64())
  84. should.Equal(any.ValueType(), jsoniter.NumberValue)
  85. should.Equal("1.23E+01", any.ToString())
  86. }