Files
Bob Idleandahrav 409beeb18b golangci-lint: replace exportloopref with copyloopvar and remove the copy of the 'for' variables (#3591)
* fix: replace golangci-lint exportloopref with copyloopvar

* fix: remove copy of the 'for' variables

---------

Co-authored-by: ahrav <[email protected]>
2024-11-13 12:52:04 -08:00

82 lines
2.0 KiB
Go

package pool
import (
"bytes"
"testing"
"github.com/stretchr/testify/assert"
"github.com/trufflesecurity/trufflehog/v3/pkg/buffers/buffer"
)
func TestNewBufferPool(t *testing.T) {
t.Parallel()
tests := []struct {
name string
size int
expectedBuffSize int
}{
{name: "Default pool size", size: defaultBufferSize, expectedBuffSize: defaultBufferSize},
{
name: "Custom pool size",
size: 8 * 1024,
expectedBuffSize: 8 * 1024,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
pool := NewBufferPool(tc.size)
assert.Equal(t, tc.expectedBuffSize, pool.bufferSize)
})
}
}
func TestBufferPoolGetPut(t *testing.T) {
t.Parallel()
tests := []struct {
name string
preparePool func(p *Pool) *buffer.Buffer // Prepare the pool and return an initial buffer to put if needed
expectedCapBefore int // Expected capacity before putting it back
expectedCapAfter int // Expected capacity after retrieving it again
}{
{
name: "Get new buffer and put back without modification",
preparePool: func(_ *Pool) *buffer.Buffer {
return nil // No initial buffer to put
},
expectedCapBefore: defaultBufferSize,
expectedCapAfter: defaultBufferSize,
},
{
name: "Put oversized buffer, expect shrink",
preparePool: func(p *Pool) *buffer.Buffer {
buf := &buffer.Buffer{Buffer: bytes.NewBuffer(make([]byte, 0, 3*defaultBufferSize))}
return buf
},
expectedCapBefore: defaultBufferSize,
expectedCapAfter: defaultBufferSize, // Should shrink back to default
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
pool := NewBufferPool(defaultBufferSize)
initialBuf := tc.preparePool(pool)
if initialBuf != nil {
pool.Put(initialBuf)
}
buf := pool.Get()
assert.Equal(t, tc.expectedCapBefore, buf.Cap())
pool.Put(buf)
bufAfter := pool.Get()
assert.Equal(t, tc.expectedCapAfter, bufAfter.Cap())
})
}
}