|
|
@@ -58,6 +58,30 @@ func Test_write_float32(t *testing.T) {
|
|
|
should.Equal("abcdefg1.123456", buf.String())
|
|
|
}
|
|
|
|
|
|
+func Test_write_float64(t *testing.T) {
|
|
|
+ vals := []float64{0, 1, -1, 99, 0xff, 0xfff, 0xffff, 0xfffff, 0xffffff, 0x4ffffff, 0xfffffff,
|
|
|
+ -0x4ffffff, -0xfffffff, 1.2345, 1.23456, 1.234567, 1.001}
|
|
|
+ for _, val := range vals {
|
|
|
+ t.Run(fmt.Sprintf("%v", val), func(t *testing.T) {
|
|
|
+ should := require.New(t)
|
|
|
+ buf := &bytes.Buffer{}
|
|
|
+ stream := NewStream(buf, 4096)
|
|
|
+ stream.WriteFloat64(val)
|
|
|
+ stream.Flush()
|
|
|
+ should.Nil(stream.Error)
|
|
|
+ should.Equal(strconv.FormatFloat(val, 'f', -1, 64), buf.String())
|
|
|
+ })
|
|
|
+ }
|
|
|
+ should := require.New(t)
|
|
|
+ buf := &bytes.Buffer{}
|
|
|
+ stream := NewStream(buf, 10)
|
|
|
+ stream.WriteRaw("abcdefg")
|
|
|
+ stream.WriteFloat64(1.123456)
|
|
|
+ stream.Flush()
|
|
|
+ should.Nil(stream.Error)
|
|
|
+ should.Equal("abcdefg1.123456", buf.String())
|
|
|
+}
|
|
|
+
|
|
|
func Benchmark_jsoniter_float(b *testing.B) {
|
|
|
b.ReportAllocs()
|
|
|
for n := 0; n < b.N; n++ {
|