|
|
|
@ -17,16 +17,9 @@ func assert(t *testing.T, cond bool, msg ...string) {
|
|
|
|
|
|
|
|
|
|
func randResult() *Result {
|
|
|
|
|
str := fmt.Sprintf("%d", rand.Uint32())
|
|
|
|
|
offsets := make([]Offset, rand.Int()%3)
|
|
|
|
|
for idx := range offsets {
|
|
|
|
|
sidx := int32(rand.Uint32() % 20)
|
|
|
|
|
eidx := sidx + int32(rand.Uint32()%20)
|
|
|
|
|
offsets[idx] = Offset{sidx, eidx}
|
|
|
|
|
}
|
|
|
|
|
return &Result{
|
|
|
|
|
item: &Item{text: util.RunesToChars([]rune(str))},
|
|
|
|
|
offsets: offsets,
|
|
|
|
|
rank: rank{index: rand.Int31()}}
|
|
|
|
|
item: &Item{text: util.RunesToChars([]rune(str))},
|
|
|
|
|
rank: rank{index: rand.Int31()}}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestEmptyMerger(t *testing.T) {
|
|
|
|
@ -64,7 +57,7 @@ func TestMergerUnsorted(t *testing.T) {
|
|
|
|
|
cnt := len(items)
|
|
|
|
|
|
|
|
|
|
// Not sorted: same order
|
|
|
|
|
mg := NewMerger(lists, false, false)
|
|
|
|
|
mg := NewMerger(nil, lists, false, false)
|
|
|
|
|
assert(t, cnt == mg.Length(), "Invalid Length")
|
|
|
|
|
for i := 0; i < cnt; i++ {
|
|
|
|
|
assert(t, items[i] == mg.Get(i), "Invalid Get")
|
|
|
|
@ -76,7 +69,7 @@ func TestMergerSorted(t *testing.T) {
|
|
|
|
|
cnt := len(items)
|
|
|
|
|
|
|
|
|
|
// Sorted sorted order
|
|
|
|
|
mg := NewMerger(lists, true, false)
|
|
|
|
|
mg := NewMerger(nil, lists, true, false)
|
|
|
|
|
assert(t, cnt == mg.Length(), "Invalid Length")
|
|
|
|
|
sort.Sort(ByRelevance(items))
|
|
|
|
|
for i := 0; i < cnt; i++ {
|
|
|
|
@ -86,7 +79,7 @@ func TestMergerSorted(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Inverse order
|
|
|
|
|
mg2 := NewMerger(lists, true, false)
|
|
|
|
|
mg2 := NewMerger(nil, lists, true, false)
|
|
|
|
|
for i := cnt - 1; i >= 0; i-- {
|
|
|
|
|
if items[i] != mg2.Get(i) {
|
|
|
|
|
t.Error("Not sorted", items[i], mg2.Get(i))
|
|
|
|
|