Skip to content

Commit 50bd6f0

Browse files
authored
Merge pull request #82 from elee1766/grow
add Grow function
2 parents d2a6a27 + 8794476 commit 50bd6f0

File tree

4 files changed

+50
-1
lines changed

4 files changed

+50
-1
lines changed

enc.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ func (e *Encoder) ResetWriter(out io.Writer) {
5959
e.first = e.first[:0]
6060
}
6161

62+
// Grow grows the underlying buffer
63+
func (e *Encoder) Grow(n int) {
64+
e.w.Grow(n)
65+
}
66+
6267
// Bytes returns underlying buffer.
6368
func (e Encoder) Bytes() []byte { return e.w.Buf }
6469

enc_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ func requireCompat(t *testing.T, cb func(*Encoder), v any) {
3232
testEncoderModes(t, cb, string(buf))
3333
}
3434

35+
func TestEncoderGrow(t *testing.T) {
36+
should := require.New(t)
37+
e := &Encoder{}
38+
should.Equal(0, len(e.Bytes()))
39+
should.Equal(0, cap(e.Bytes()))
40+
e.Grow(1024)
41+
should.Equal(0, len(e.Bytes()))
42+
should.Equal(1024, cap(e.Bytes()))
43+
e.Grow(512)
44+
should.Equal(0, len(e.Bytes()))
45+
should.Equal(1024, cap(e.Bytes()))
46+
e.Grow(4096)
47+
should.Equal(0, len(e.Bytes()))
48+
should.Equal(4096, cap(e.Bytes()))
49+
}
50+
3551
func TestEncoderByteShouldGrowBuffer(t *testing.T) {
3652
should := require.New(t)
3753
e := GetEncoder()

w.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package jx
22

3-
import "io"
3+
import (
4+
"bytes"
5+
"io"
6+
)
47

58
// Writer writes json tokens to underlying buffer.
69
//
@@ -51,6 +54,15 @@ func (w *Writer) ResetWriter(out io.Writer) {
5154
w.stream.Reset(out)
5255
}
5356

57+
// Grow grows the underlying buffer.
58+
//
59+
// Calls (*bytes.Buffer).Grow(n int) on w.Buf.
60+
func (w *Writer) Grow(n int) {
61+
buf := bytes.NewBuffer(w.Buf)
62+
buf.Grow(n)
63+
w.Buf = buf.Bytes()
64+
}
65+
5466
// byte writes a single byte.
5567
func (w *Writer) byte(c byte) (fail bool) {
5668
if w.stream == nil {

w_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,19 @@ func TestWriter_String(t *testing.T) {
2323
w.True()
2424
require.Equal(t, "true", w.String())
2525
}
26+
27+
func TestWriter_Grow(t *testing.T) {
28+
should := require.New(t)
29+
e := &Writer{}
30+
should.Equal(0, len(e.Buf))
31+
should.Equal(0, cap(e.Buf))
32+
e.Grow(1024)
33+
should.Equal(0, len(e.Buf))
34+
should.Equal(1024, cap(e.Buf))
35+
e.Grow(512)
36+
should.Equal(0, len(e.Buf))
37+
should.Equal(1024, cap(e.Buf))
38+
e.Grow(4096)
39+
should.Equal(0, len(e.Buf))
40+
should.Equal(4096, cap(e.Buf))
41+
}

0 commit comments

Comments
 (0)