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