jsoniter_any_float_test.go 2.0 KB

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