jsoniter_any_float_test.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package jsoniter
  2. import (
  3. "testing"
  4. "github.com/json-iterator/go/require"
  5. )
  6. var floatConvertMap = map[string]float64{
  7. "null": 0,
  8. "true": 1,
  9. "false": 0,
  10. `"true"`: 0,
  11. `"false"`: 0,
  12. "123": 123,
  13. `"123true"`: 123,
  14. `"+"`: 0,
  15. `"-"`: 0,
  16. `"-123true"`: -123,
  17. `"-99.9true"`: -99.9,
  18. "0": 0,
  19. `"0"`: 0,
  20. "-1": -1,
  21. "1.1": 1.1,
  22. "0.0": 0,
  23. "-1.1": -1.1,
  24. `"+1.1"`: 1.1,
  25. `""`: 0,
  26. "[1,2]": 1,
  27. "[]": 0,
  28. "{}": 0,
  29. `{"abc":1}`: 0,
  30. }
  31. func Test_read_any_to_float(t *testing.T) {
  32. should := require.New(t)
  33. for k, v := range floatConvertMap {
  34. any := Get([]byte(k))
  35. should.Equal(float64(v), any.ToFloat64(), "the original val is "+k)
  36. }
  37. for k, v := range floatConvertMap {
  38. any := Get([]byte(k))
  39. should.Equal(float32(v), any.ToFloat32(), "the original val is "+k)
  40. }
  41. }
  42. func Test_read_float_to_any(t *testing.T) {
  43. should := require.New(t)
  44. any := WrapFloat64(12.3)
  45. anyFloat64 := float64(12.3)
  46. //negaAnyFloat64 := float64(-1.1)
  47. any2 := WrapFloat64(-1.1)
  48. should.Equal(float64(12.3), any.ToFloat64())
  49. //should.Equal("12.3", any.ToString())
  50. should.True(any.ToBool())
  51. should.Equal(float32(anyFloat64), any.ToFloat32())
  52. should.Equal(int(anyFloat64), any.ToInt())
  53. should.Equal(int32(anyFloat64), any.ToInt32())
  54. should.Equal(int64(anyFloat64), any.ToInt64())
  55. should.Equal(uint(anyFloat64), any.ToUint())
  56. should.Equal(uint32(anyFloat64), any.ToUint32())
  57. should.Equal(uint64(anyFloat64), any.ToUint64())
  58. should.Equal(uint(0), any2.ToUint())
  59. should.Equal(uint32(0), any2.ToUint32())
  60. should.Equal(uint64(0), any2.ToUint64())
  61. should.Equal(any.ValueType(), Number)
  62. }