github.com/segmentio/parquet-go@v0.0.0-20230712180008-5d42db8f0d47/buffer_internal_test.go (about)

     1  package parquet
     2  
     3  import (
     4  	"fmt"
     5  	"math/rand"
     6  	"testing"
     7  )
     8  
     9  func TestBufferAlwaysCorrectSize(t *testing.T) {
    10  	var p bufferPool
    11  	for i := 0; i < 1000; i++ {
    12  		n := rand.Intn(1024 * 1024)
    13  		b := p.get(n)
    14  		if len(b.data) != n {
    15  			t.Fatalf("Expected buffer of size %d, got %d", n, len(b.data))
    16  		}
    17  		b.unref()
    18  	}
    19  }
    20  
    21  func TestBufferPoolBucketIndexAndSizeOf(t *testing.T) {
    22  	tests := []struct {
    23  		size        int
    24  		bucketIndex int
    25  		bucketSize  int
    26  	}{
    27  		{size: 0, bucketIndex: 0, bucketSize: 4096},
    28  		{size: 1, bucketIndex: 0, bucketSize: 4096},
    29  		{size: 2049, bucketIndex: 0, bucketSize: 4096},
    30  		{size: 4096, bucketIndex: 0, bucketSize: 4096},
    31  		{size: 4097, bucketIndex: 1, bucketSize: 8192},
    32  		{size: 8192, bucketIndex: 1, bucketSize: 8192},
    33  		{size: 8193, bucketIndex: 2, bucketSize: 16384},
    34  		{size: 16384, bucketIndex: 2, bucketSize: 16384},
    35  		{size: 16385, bucketIndex: 3, bucketSize: 32768},
    36  		{size: 32768, bucketIndex: 3, bucketSize: 32768},
    37  		{size: 32769, bucketIndex: 4, bucketSize: 65536},
    38  		{size: 262143, bucketIndex: 6, bucketSize: 262144},
    39  		{size: 262144, bucketIndex: 6, bucketSize: 262144},
    40  		{size: 262145, bucketIndex: 7, bucketSize: 393216},
    41  	}
    42  
    43  	for _, test := range tests {
    44  		t.Run(fmt.Sprintf("size=%d", test.size), func(t *testing.T) {
    45  			bucketIndex, bucketSize := bufferPoolBucketIndexAndSizeOfGet(test.size)
    46  
    47  			if bucketIndex != test.bucketIndex {
    48  				t.Errorf("wrong bucket index, want %d but got %d", test.bucketIndex, bucketIndex)
    49  			}
    50  
    51  			if bucketSize != test.bucketSize {
    52  				t.Errorf("wrong bucket size, want %d but got %d", test.bucketSize, bucketSize)
    53  			}
    54  		})
    55  	}
    56  }