36 lines
809 B
Go
36 lines
809 B
Go
package bytesutil_test
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"testing"
|
|
|
|
"github.com/influxdata/influxdb/pkg/bytesutil"
|
|
)
|
|
|
|
func TestSearchBytesFixed(t *testing.T) {
|
|
n, sz := 5, 8
|
|
a := make([]byte, n*sz) // 5 - 8 byte int64s
|
|
|
|
for i := 0; i < 5; i++ {
|
|
binary.BigEndian.PutUint64(a[i*sz:i*sz+sz], uint64(i))
|
|
}
|
|
|
|
var x [8]byte
|
|
|
|
for i := 0; i < n; i++ {
|
|
binary.BigEndian.PutUint64(x[:], uint64(i))
|
|
if exp, got := i*sz, bytesutil.SearchBytesFixed(a, len(x), func(v []byte) bool {
|
|
return bytes.Compare(v, x[:]) >= 0
|
|
}); exp != got {
|
|
t.Fatalf("index mismatch: exp %v, got %v", exp, got)
|
|
}
|
|
}
|
|
|
|
if exp, got := len(a)-1, bytesutil.SearchBytesFixed(a, 1, func(v []byte) bool {
|
|
return bytes.Compare(v, []byte{99}) >= 0
|
|
}); exp != got {
|
|
t.Fatalf("index mismatch: exp %v, got %v", exp, got)
|
|
}
|
|
}
|