| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package misc_tests
- import (
- "encoding/json"
- "testing"
- "github.com/json-iterator/go"
- "github.com/stretchr/testify/require"
- )
- func Test_read_big_float(t *testing.T) {
- should := require.New(t)
- iter := jsoniter.ParseString(jsoniter.ConfigDefault, `12.3`)
- val := iter.ReadBigFloat()
- val64, _ := val.Float64()
- should.Equal(12.3, val64)
- }
- func Test_read_big_int(t *testing.T) {
- should := require.New(t)
- iter := jsoniter.ParseString(jsoniter.ConfigDefault, `92233720368547758079223372036854775807`)
- val := iter.ReadBigInt()
- should.NotNil(val)
- should.Equal(`92233720368547758079223372036854775807`, val.String())
- }
- func Test_read_float_as_interface(t *testing.T) {
- should := require.New(t)
- iter := jsoniter.ParseString(jsoniter.ConfigDefault, `12.3`)
- should.Equal(float64(12.3), iter.Read())
- }
- func Test_wrap_float(t *testing.T) {
- should := require.New(t)
- str, err := jsoniter.MarshalToString(jsoniter.WrapFloat64(12.3))
- should.Nil(err)
- should.Equal("12.3", str)
- }
- func Test_read_float64_cursor(t *testing.T) {
- should := require.New(t)
- iter := jsoniter.ParseString(jsoniter.ConfigDefault, "[1.23456789\n,2,3]")
- should.True(iter.ReadArray())
- should.Equal(1.23456789, iter.Read())
- should.True(iter.ReadArray())
- should.Equal(float64(2), iter.Read())
- }
- func Test_read_float_scientific(t *testing.T) {
- should := require.New(t)
- var obj interface{}
- should.NoError(jsoniter.UnmarshalFromString(`1e1`, &obj))
- should.Equal(float64(10), obj)
- should.NoError(json.Unmarshal([]byte(`1e1`), &obj))
- should.Equal(float64(10), obj)
- should.NoError(jsoniter.UnmarshalFromString(`1.0e1`, &obj))
- should.Equal(float64(10), obj)
- should.NoError(json.Unmarshal([]byte(`1.0e1`), &obj))
- should.Equal(float64(10), obj)
- }
- func Test_lossy_float_marshal(t *testing.T) {
- should := require.New(t)
- api := jsoniter.Config{MarshalFloatWith6Digits: true}.Froze()
- output, err := api.MarshalToString(float64(0.1234567))
- should.Nil(err)
- should.Equal("0.123457", output)
- output, err = api.MarshalToString(float32(0.1234567))
- should.Nil(err)
- should.Equal("0.123457", output)
- }
- func Test_read_number(t *testing.T) {
- should := require.New(t)
- iter := jsoniter.ParseString(jsoniter.ConfigDefault, `92233720368547758079223372036854775807`)
- val := iter.ReadNumber()
- should.Equal(`92233720368547758079223372036854775807`, string(val))
- }
- func Benchmark_jsoniter_float(b *testing.B) {
- b.ReportAllocs()
- input := []byte(`1.1123,`)
- iter := jsoniter.NewIterator(jsoniter.ConfigDefault)
- for n := 0; n < b.N; n++ {
- iter.ResetBytes(input)
- iter.ReadFloat64()
- }
- }
- func Benchmark_json_float(b *testing.B) {
- for n := 0; n < b.N; n++ {
- result := float64(0)
- json.Unmarshal([]byte(`1.1`), &result)
- }
- }
|