1// +build go1.8 2 3package misc_tests 4 5import ( 6 "bytes" 7 "encoding/json" 8 "io/ioutil" 9 "strconv" 10 "testing" 11 12 "github.com/json-iterator/go" 13 "github.com/stretchr/testify/require" 14) 15 16func Test_read_uint64_invalid(t *testing.T) { 17 should := require.New(t) 18 iter := jsoniter.ParseString(jsoniter.ConfigDefault, ",") 19 iter.ReadUint64() 20 should.NotNil(iter.Error) 21} 22 23func Test_read_int32_array(t *testing.T) { 24 should := require.New(t) 25 input := `[123,456,789]` 26 val := make([]int32, 0) 27 jsoniter.UnmarshalFromString(input, &val) 28 should.Equal(3, len(val)) 29} 30 31func Test_read_int64_array(t *testing.T) { 32 should := require.New(t) 33 input := `[123,456,789]` 34 val := make([]int64, 0) 35 jsoniter.UnmarshalFromString(input, &val) 36 should.Equal(3, len(val)) 37} 38 39func Test_wrap_int(t *testing.T) { 40 should := require.New(t) 41 str, err := jsoniter.MarshalToString(jsoniter.WrapInt64(100)) 42 should.Nil(err) 43 should.Equal("100", str) 44} 45 46func Test_write_val_int(t *testing.T) { 47 should := require.New(t) 48 buf := &bytes.Buffer{} 49 stream := jsoniter.NewStream(jsoniter.ConfigDefault, buf, 4096) 50 stream.WriteVal(1001) 51 stream.Flush() 52 should.Nil(stream.Error) 53 should.Equal("1001", buf.String()) 54} 55 56func Test_write_val_int_ptr(t *testing.T) { 57 should := require.New(t) 58 buf := &bytes.Buffer{} 59 stream := jsoniter.NewStream(jsoniter.ConfigDefault, buf, 4096) 60 val := 1001 61 stream.WriteVal(&val) 62 stream.Flush() 63 should.Nil(stream.Error) 64 should.Equal("1001", buf.String()) 65} 66 67func Test_float_as_int(t *testing.T) { 68 should := require.New(t) 69 var i int 70 should.NotNil(jsoniter.Unmarshal([]byte(`1.1`), &i)) 71} 72 73func Benchmark_jsoniter_encode_int(b *testing.B) { 74 stream := jsoniter.NewStream(jsoniter.ConfigDefault, ioutil.Discard, 64) 75 for n := 0; n < b.N; n++ { 76 stream.Reset(nil) 77 stream.WriteUint64(0xffffffff) 78 } 79} 80 81func Benchmark_itoa(b *testing.B) { 82 for n := 0; n < b.N; n++ { 83 strconv.FormatInt(0xffffffff, 10) 84 } 85} 86 87func Benchmark_jsoniter_int(b *testing.B) { 88 iter := jsoniter.NewIterator(jsoniter.ConfigDefault) 89 input := []byte(`100`) 90 for n := 0; n < b.N; n++ { 91 iter.ResetBytes(input) 92 iter.ReadInt64() 93 } 94} 95 96func Benchmark_json_int(b *testing.B) { 97 for n := 0; n < b.N; n++ { 98 result := int64(0) 99 json.Unmarshal([]byte(`-100`), &result) 100 } 101} 102