package blobovnicza import ( "fmt" "testing" "github.com/stretchr/testify/require" ) func TestSizes(t *testing.T) { for _, item := range []struct { sz uint64 // object size upperBound uint64 // upper bound of expected range }{ { sz: 0, upperBound: firstBucketBound, }, { sz: firstBucketBound, upperBound: firstBucketBound, }, { sz: firstBucketBound + 1, upperBound: 2 * firstBucketBound, }, { sz: 2 * firstBucketBound, upperBound: 2 * firstBucketBound, }, { sz: 2*firstBucketBound + 1, upperBound: 4 * firstBucketBound, }, } { key := bucketForSize(item.sz) require.Equal(t, bucketKeyFromBounds(item.upperBound), key) } } func BenchmarkUpperBound(b *testing.B) { for _, size := range []uint64{1, 1023, 65 * 1024, 40 * 1024 * 1024} { b.Run(fmt.Sprintf("size=%d", size), func(b *testing.B) { for i := 0; i < b.N; i++ { _ = upperPowerOfTwo(size) } }) } }