0
0
bleve/index/scorch/segment/zap/intcoder_test.go
2017-12-12 11:21:55 -05:00

60 lines
1.2 KiB
Go

package zap
import (
"bytes"
"reflect"
"testing"
)
func TestChunkIntCoder(t *testing.T) {
tests := []struct {
maxDocNum uint64
chunkSize uint64
docNums []uint64
vals [][]uint64
expected []byte
}{
{
maxDocNum: 0,
chunkSize: 1,
docNums: []uint64{0},
vals: [][]uint64{
[]uint64{3},
},
// 1 chunk, chunk-0 length 1, value 3
expected: []byte{0x1, 0x1, 0x3},
},
{
maxDocNum: 1,
chunkSize: 1,
docNums: []uint64{0, 1},
vals: [][]uint64{
[]uint64{3},
[]uint64{7},
},
// 2 chunks, chunk-0 length 1, chunk-1 length 1, value 3, value 7
expected: []byte{0x2, 0x1, 0x1, 0x3, 0x7},
},
}
for _, test := range tests {
cic := newChunkedIntCoder(test.chunkSize, test.maxDocNum)
for i, docNum := range test.docNums {
err := cic.Add(docNum, test.vals[i]...)
if err != nil {
t.Fatalf("error adding to intcoder: %v", err)
}
}
cic.Close()
var actual bytes.Buffer
_, err := cic.Write(&actual)
if err != nil {
t.Fatalf("error writing: %v", err)
}
if !reflect.DeepEqual(test.expected, actual.Bytes()) {
t.Errorf("got % x, expected % x", actual.Bytes(), test.expected)
}
}
}