package any_tests import ( "testing" "github.com/json-iterator/go" "github.com/stretchr/testify/require" ) var floatConvertMap = map[string]float64{ "null": 0, "true": 1, "false": 0, `"true"`: 0, `"false"`: 0, "1e1": 10, "1e+1": 10, "1e-1": .1, "1E1": 10, "1E+1": 10, "1E-1": .1, "-1e1": -10, "-1e+1": -10, "-1e-1": -.1, "-1E1": -10, "-1E+1": -10, "-1E-1": -.1, `"1e1"`: 10, `"1e+1"`: 10, `"1e-1"`: .1, `"1E1"`: 10, `"1E+1"`: 10, `"1E-1"`: .1, `"-1e1"`: -10, `"-1e+1"`: -10, `"-1e-1"`: -.1, `"-1E1"`: -10, `"-1E+1"`: -10, `"-1E-1"`: -.1, "123": 123, `"123true"`: 123, `"+"`: 0, `"-"`: 0, `"-123true"`: -123, `"-99.9true"`: -99.9, "0": 0, `"0"`: 0, "-1": -1, "1.1": 1.1, "0.0": 0, "-1.1": -1.1, `"+1.1"`: 1.1, `""`: 0, "[1,2]": 1, "[]": 0, "{}": 0, `{"abc":1}`: 0, } func Test_read_any_to_float(t *testing.T) { should := require.New(t) for k, v := range floatConvertMap { any := jsoniter.Get([]byte(k)) should.Equal(float64(v), any.ToFloat64(), "the original val is "+k) } for k, v := range floatConvertMap { any := jsoniter.Get([]byte(k)) should.Equal(float32(v), any.ToFloat32(), "the original val is "+k) } } func Test_read_float_to_any(t *testing.T) { should := require.New(t) any := jsoniter.WrapFloat64(12.3) anyFloat64 := float64(12.3) any2 := jsoniter.WrapFloat64(-1.1) should.Equal(float64(12.3), any.ToFloat64()) should.True(any.ToBool()) should.Equal(float32(anyFloat64), any.ToFloat32()) should.Equal(int(anyFloat64), any.ToInt()) should.Equal(int32(anyFloat64), any.ToInt32()) should.Equal(int64(anyFloat64), any.ToInt64()) should.Equal(uint(anyFloat64), any.ToUint()) should.Equal(uint32(anyFloat64), any.ToUint32()) should.Equal(uint64(anyFloat64), any.ToUint64()) should.Equal(uint(0), any2.ToUint()) should.Equal(uint32(0), any2.ToUint32()) should.Equal(uint64(0), any2.ToUint64()) should.Equal(any.ValueType(), jsoniter.NumberValue) should.Equal("1.23E+01", any.ToString()) }