1package jsoniter
2
3import (
4	"github.com/stretchr/testify/require"
5	"testing"
6)
7
8func Test_writeByte_should_grow_buffer(t *testing.T) {
9	should := require.New(t)
10	stream := NewStream(ConfigDefault, nil, 1)
11	stream.writeByte('1')
12	should.Equal("1", string(stream.Buffer()))
13	should.Equal(1, len(stream.buf))
14	stream.writeByte('2')
15	should.Equal("12", string(stream.Buffer()))
16	should.Equal(2, len(stream.buf))
17	stream.writeThreeBytes('3', '4', '5')
18	should.Equal("12345", string(stream.Buffer()))
19}
20
21func Test_writeBytes_should_grow_buffer(t *testing.T) {
22	should := require.New(t)
23	stream := NewStream(ConfigDefault, nil, 1)
24	stream.Write([]byte{'1', '2'})
25	should.Equal("12", string(stream.Buffer()))
26	should.Equal(2, len(stream.buf))
27	stream.Write([]byte{'3', '4', '5', '6', '7'})
28	should.Equal("1234567", string(stream.Buffer()))
29	should.Equal(7, len(stream.buf))
30}
31
32func Test_writeIndention_should_grow_buffer(t *testing.T) {
33	should := require.New(t)
34	stream := NewStream(Config{IndentionStep: 2}.Froze(), nil, 1)
35	stream.WriteVal([]int{1, 2, 3})
36	should.Equal("[\n  1,\n  2,\n  3\n]", string(stream.Buffer()))
37}
38
39func Test_writeRaw_should_grow_buffer(t *testing.T) {
40	should := require.New(t)
41	stream := NewStream(ConfigDefault, nil, 1)
42	stream.WriteRaw("123")
43	should.Nil(stream.Error)
44	should.Equal("123", string(stream.Buffer()))
45}
46
47func Test_writeString_should_grow_buffer(t *testing.T) {
48	should := require.New(t)
49	stream := NewStream(ConfigDefault, nil, 0)
50	stream.WriteString("123")
51	should.Nil(stream.Error)
52	should.Equal(`"123"`, string(stream.Buffer()))
53}
54
55type NopWriter struct {
56	bufferSize int
57}
58
59func (w *NopWriter) Write(p []byte) (n int, err error) {
60	w.bufferSize = cap(p)
61	return len(p), nil
62}
63
64func Test_flush_buffer_should_stop_grow_buffer(t *testing.T) {
65	writer := new(NopWriter)
66	NewEncoder(writer).Encode(make([]int, 10000000))
67	should := require.New(t)
68	should.Equal(8, writer.bufferSize)
69}
70