jsoniter_int_test.go 2.2 KB

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