fix tests, prep for union rle implementations

This commit is contained in:
Matt Jaffee 2017-05-26 11:32:20 -05:00
parent 250e8f6f5b
commit 9781a4c78b
2 changed files with 28 additions and 4 deletions

View file

@ -1804,12 +1804,24 @@ func union(a, b *container) *container {
if a.isArray() {
if b.isArray() {
return unionArrayArray(a, b)
} else if b.isRun() {
return unionArrayRun(a, b)
} else {
return unionArrayBitmap(a, b)
}
} else if a.isRun() {
if b.isArray() {
return unionArrayRun(b, a)
} else if b.isRun() {
return unionRunRun(a, b)
} else {
return unionBitmapRun(b, a)
}
} else {
if b.isArray() {
return unionArrayBitmap(b, a)
} else if b.isRun() {
return unionBitmapRun(a, b)
} else {
return unionBitmapBitmap(a, b)
}
@ -1847,6 +1859,18 @@ func unionArrayArray(a, b *container) *container {
return output
}
func unionArrayRun(a, b *container) *container {
return nil
}
func unionRunRun(a, b *container) *container {
return nil
}
func unionBitmapRun(a, b *container) *container {
return nil
}
func unionArrayBitmap(a, b *container) *container {
output := &container{}
itr := newBufIterator(newBitmapIterator(b.bitmap))

View file

@ -286,7 +286,7 @@ func TestIntersectionCountArrayRun(t *testing.T) {
}
func TestIntersectionCountBitmapRun(t *testing.T) {
a := &container{bitmap: []uint64{1}}
a := &container{bitmap: []uint64{0x8000000000000000}}
b := &container{runs: []interval32{{start: 63, last: 64}}}
ret := intersectionCountBitmapRun(a, b)
@ -295,11 +295,11 @@ func TestIntersectionCountBitmapRun(t *testing.T) {
}
a = &container{bitmap: []uint64{0xF0000001, 0xFF00000000000000, 0xFF000000000000F0, 0x0F0000}}
b = &container{runs: []interval32{{start: 33, last: 35}, {start: 62, last: 69}, {start: 130, last: 150}, {start: 186, last: 300}}}
b = &container{runs: []interval32{{start: 29, last: 31}, {start: 125, last: 134}, {start: 191, last: 197}, {start: 200, last: 300}}}
ret = intersectionCountBitmapRun(a, b)
if ret != 22 {
t.Fatalf("count of %v with %v should be 22, but got %v", a.bitmap, b.runs, ret)
if ret != 14 {
t.Fatalf("count of %v with %v should be 14, but got %v", a.bitmap, b.runs, ret)
}
}