From 218edcc3878394a6942d4f72e3be99137c22825a Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 14 Feb 2023 14:27:18 -0700 Subject: reencode: Fix trimming trailing zeros --- reencode_test.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'reencode_test.go') diff --git a/reencode_test.go b/reencode_test.go index 83660ef..f135aa5 100644 --- a/reencode_test.go +++ b/reencode_test.go @@ -131,6 +131,24 @@ func TestReEncode(t *testing.T) { โ€”ยป9 โ€”]`, }, + "numbers": { + enc: ReEncoderConfig{ + Compact: true, + }, + in: []any{ + Number("1.200e003"), + }, + exp: `[1.2e3]`, + }, + "numbers-zero": { + enc: ReEncoderConfig{ + Compact: true, + }, + in: []any{ + Number("1.000e000"), + }, + exp: `[1.0e0]`, + }, } for tcName, tc := range testcases { tc := tc -- cgit v1.2.3-2-g168b From 7a938da20e8d243bc254cd821b7cf61b379be4a6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 15 Feb 2023 15:10:00 -0700 Subject: reencode: Rethink the UTF-8 buffer --- reencode_test.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'reencode_test.go') diff --git a/reencode_test.go b/reencode_test.go index f135aa5..82a1861 100644 --- a/reencode_test.go +++ b/reencode_test.go @@ -161,3 +161,64 @@ func TestReEncode(t *testing.T) { }) } } + +func TestReEncodeWriteSize(t *testing.T) { + t.Parallel() + + multibyteRune := `๐Ÿ˜‚` + assert.Len(t, multibyteRune, 4) + + input := `"` + multibyteRune + `"` + + t.Run("bytes-bigwrite", func(t *testing.T) { + t.Parallel() + var out strings.Builder + enc := NewReEncoder(&out, ReEncoderConfig{}) + + n, err := enc.Write([]byte(input)) + assert.NoError(t, err) + assert.Equal(t, len(input), n) + + assert.Equal(t, input, out.String()) + }) + t.Run("string-bigwrite", func(t *testing.T) { + t.Parallel() + var out strings.Builder + enc := NewReEncoder(&out, ReEncoderConfig{}) + + n, err := enc.WriteString(input) + assert.NoError(t, err) + assert.Equal(t, len(input), n) + + assert.Equal(t, input, out.String()) + }) + + t.Run("bytes-smallwrites", func(t *testing.T) { + t.Parallel() + var out strings.Builder + enc := NewReEncoder(&out, ReEncoderConfig{}) + + var buf [1]byte + for i := 0; i < len(input); i++ { + buf[0] = input[i] + n, err := enc.Write(buf[:]) + assert.NoError(t, err) + assert.Equal(t, 1, n) + } + + assert.Equal(t, input, out.String()) + }) + t.Run("string-smallwrites", func(t *testing.T) { + t.Parallel() + var out strings.Builder + enc := NewReEncoder(&out, ReEncoderConfig{}) + + for i := 0; i < len(input); i++ { + n, err := enc.WriteString(input[i : i+1]) + assert.NoError(t, err) + assert.Equal(t, 1, n) + } + + assert.Equal(t, input, out.String()) + }) +} -- cgit v1.2.3-2-g168b From 38989a9c4f69abfe04c3eb4ec3382be88802141c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Wed, 15 Feb 2023 23:53:59 -0700 Subject: reencode: Fix .stackSize --- reencode_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'reencode_test.go') diff --git a/reencode_test.go b/reencode_test.go index 82a1861..bc6d246 100644 --- a/reencode_test.go +++ b/reencode_test.go @@ -9,6 +9,8 @@ import ( "testing" "github.com/stretchr/testify/assert" + + "git.lukeshu.com/go/lowmemjson/internal/fastio" ) func TestReEncode(t *testing.T) { @@ -222,3 +224,17 @@ func TestReEncodeWriteSize(t *testing.T) { assert.Equal(t, input, out.String()) }) } + +func TestReEncoderStackSize(t *testing.T) { + t.Parallel() + + enc := NewReEncoder(fastio.Discard, ReEncoderConfig{}) + assert.Equal(t, 0, enc.stackSize()) + + for i := 0; i < 5; i++ { + assert.NoError(t, enc.WriteByte('[')) + assert.Equal(t, i+1, enc.stackSize()) + enc.pushWriteBarrier() + assert.Equal(t, i+2, enc.stackSize()) + } +} -- cgit v1.2.3-2-g168b From 1a5b0561f53441d8a259a5096281699b5af16a6c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 16 Feb 2023 16:53:53 -0700 Subject: reencode: Add CompactFloats --- reencode_test.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'reencode_test.go') diff --git a/reencode_test.go b/reencode_test.go index bc6d246..715e976 100644 --- a/reencode_test.go +++ b/reencode_test.go @@ -135,7 +135,8 @@ func TestReEncode(t *testing.T) { }, "numbers": { enc: ReEncoderConfig{ - Compact: true, + Compact: true, + CompactFloats: true, }, in: []any{ Number("1.200e003"), @@ -144,7 +145,8 @@ func TestReEncode(t *testing.T) { }, "numbers-zero": { enc: ReEncoderConfig{ - Compact: true, + Compact: true, + CompactFloats: true, }, in: []any{ Number("1.000e000"), -- cgit v1.2.3-2-g168b