...

Source file src/github.com/launchdarkly/go-jsonstream/v3/jwriter/streamable_buffer_test.go

Documentation: github.com/launchdarkly/go-jsonstream/v3/jwriter

     1  package jwriter
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestStreamableBufferInMemoryMode(t *testing.T) {
    12  	var b streamableBuffer
    13  	expected := writeTestDataToBuffer(&b)
    14  	assert.Equal(t, expected, string(b.Bytes()))
    15  }
    16  
    17  func TestStreamableBufferFlushDoesNothingByDefault(t *testing.T) {
    18  	var b streamableBuffer
    19  	expected := writeTestDataToBuffer(&b)
    20  	require.NoError(t, b.Flush())
    21  	assert.Equal(t, expected, string(b.Bytes()))
    22  }
    23  
    24  func TestStreamableBufferStreamingMode(t *testing.T) {
    25  	t.Run("verify full data", func(t *testing.T) {
    26  		var b streamableBuffer
    27  		var target bytes.Buffer
    28  		b.SetStreamingWriter(&target, 20)
    29  		expected := writeTestDataToBuffer(&b)
    30  		b.Flush()
    31  		assert.Equal(t, expected, target.String())
    32  	})
    33  
    34  	t.Run("data is flushed incrementally", func(t *testing.T) {
    35  		var b streamableBuffer
    36  		var target bytes.Buffer
    37  		b.SetStreamingWriter(&target, 10)
    38  
    39  		b.WriteString("12345678")
    40  		assert.Len(t, target.Bytes(), 0)
    41  
    42  		b.WriteString("90")
    43  		assert.Equal(t, "1234567890", target.String())
    44  
    45  		b.WriteString("abcdefghijklm")
    46  		assert.Equal(t, "1234567890abcdefghijklm", target.String())
    47  
    48  		b.WriteString("nopqrstu")
    49  		assert.Equal(t, "1234567890abcdefghijklm", target.String())
    50  
    51  		b.WriteRune('v')
    52  		b.WriteByte('w')
    53  		assert.Equal(t, "1234567890abcdefghijklmnopqrstuvw", target.String())
    54  
    55  		b.WriteString("xyz")
    56  		b.Flush()
    57  		assert.Equal(t, "1234567890abcdefghijklmnopqrstuvwxyz", target.String())
    58  	})
    59  }
    60  
    61  func writeTestDataToBuffer(b *streamableBuffer) string {
    62  	s := "abcdefghijklmnopqrstuvwxyz🐈"
    63  	expected := ""
    64  
    65  	for i := 0; i < 100; i++ {
    66  		b.WriteString(s)
    67  		expected += s
    68  		b.WriteRune('$')
    69  		b.WriteByte(' ')
    70  		expected += "$ "
    71  	}
    72  
    73  	return expected
    74  }
    75  

View as plain text