github.com/ssgreg/logf@v1.4.1/buffer_test.go (about)

     1  package logf
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestBufferInitial(t *testing.T) {
    11  	capacity := 10
    12  
    13  	t.Run("Initial", func(t *testing.T) {
    14  		buf := NewBufferWithCapacity(capacity)
    15  
    16  		require.EqualValues(t, 0, buf.Len())
    17  		require.EqualValues(t, capacity, buf.Cap())
    18  	})
    19  }
    20  
    21  func TestBufferAppend(t *testing.T) {
    22  	t.Run("AppendString", func(t *testing.T) {
    23  		capacity := 10
    24  		data := "12345678"
    25  		dataLen := len(data)
    26  		buf := NewBufferWithCapacity(capacity)
    27  
    28  		buf.AppendString(data)
    29  		require.EqualValues(t, dataLen, buf.Len())
    30  		require.EqualValues(t, capacity, buf.Cap())
    31  		require.EqualValues(t, data, string(buf.Data))
    32  
    33  		buf.AppendBytes([]byte(data))
    34  		require.EqualValues(t, dataLen*2, buf.Len())
    35  		require.True(t, buf.Cap() >= dataLen*2)
    36  		require.EqualValues(t, data+data, buf.String())
    37  
    38  		n, err := buf.Write([]byte(data))
    39  		assert.Equal(t, len(data), n)
    40  		assert.NoError(t, err)
    41  		require.EqualValues(t, dataLen*3, buf.Len())
    42  		require.True(t, buf.Cap() >= dataLen*3)
    43  		require.EqualValues(t, data+data+data, buf.String())
    44  
    45  		buf.AppendByte('\n')
    46  		require.EqualValues(t, dataLen*3+1, buf.Len())
    47  		require.True(t, buf.Cap() >= dataLen*3+1)
    48  		require.EqualValues(t, data+data+data+"\n", buf.String())
    49  	})
    50  }
    51  
    52  func TestBufferEnsureSize(t *testing.T) {
    53  	capacity := 10
    54  	data := "12345678"
    55  	dataLen := len(data)
    56  
    57  	t.Run("DoNothingWithEnoughCapacity", func(t *testing.T) {
    58  		buf := NewBufferWithCapacity(capacity)
    59  		buf.AppendString(data)
    60  
    61  		buf.EnsureSize(capacity - dataLen)
    62  		require.EqualValues(t, dataLen, buf.Len())
    63  		require.EqualValues(t, capacity, buf.Cap())
    64  	})
    65  
    66  	t.Run("ReallocIfCapacityIsNotEnough", func(t *testing.T) {
    67  		buf := NewBufferWithCapacity(capacity)
    68  		buf.AppendString(data)
    69  
    70  		buf.EnsureSize((capacity - dataLen) * 2)
    71  		require.EqualValues(t, dataLen, buf.Len())
    72  		require.True(t, buf.Cap() > capacity+(capacity-dataLen)*2)
    73  		require.EqualValues(t, data, buf.String())
    74  	})
    75  }
    76  
    77  func TestBufferExtendBytes(t *testing.T) {
    78  	t.Run("WithoutRealloc", func(t *testing.T) {
    79  		capacity := 10
    80  		buf := NewBufferWithCapacity(capacity)
    81  
    82  		buf.ExtendBytes(capacity)
    83  		require.EqualValues(t, capacity, buf.Len())
    84  		require.EqualValues(t, capacity, buf.Cap())
    85  	})
    86  	t.Run("WithRealloc", func(t *testing.T) {
    87  		capacity := 10
    88  		buf := NewBufferWithCapacity(capacity)
    89  
    90  		buf.ExtendBytes(capacity * 2)
    91  		require.EqualValues(t, capacity*2, buf.Len())
    92  		require.True(t, buf.Cap() >= capacity*2)
    93  	})
    94  }
    95  
    96  func TestBufferBack(t *testing.T) {
    97  	capacity := 10
    98  	buf := NewBufferWithCapacity(capacity)
    99  	buf.AppendByte('\n')
   100  	assert.EqualValues(t, '\n', buf.Back())
   101  }
   102  
   103  func TestBufferAppendFunctions(t *testing.T) {
   104  	capacity := 10
   105  	buf := NewBufferWithCapacity(capacity)
   106  
   107  	AppendUint(buf, 123456789012345678)
   108  	assert.Equal(t, []byte("123456789012345678"), buf.Bytes())
   109  	buf.Reset()
   110  
   111  	AppendInt(buf, -123456789012345678)
   112  	assert.Equal(t, []byte("-123456789012345678"), buf.Bytes())
   113  	buf.Reset()
   114  
   115  	AppendFloat32(buf, 123456.16)
   116  	assert.Equal(t, []byte("123456.16"), buf.Bytes())
   117  	buf.Reset()
   118  
   119  	AppendFloat64(buf, 123456.16)
   120  	assert.Equal(t, []byte("123456.16"), buf.Bytes())
   121  	buf.Reset()
   122  
   123  	AppendBool(buf, true)
   124  	assert.Equal(t, []byte("true"), buf.Bytes())
   125  	buf.Reset()
   126  }