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 }