From 9781a4c78b458261eac0eda4989e2cd29a66daac Mon Sep 17 00:00:00 2001 From: Matt Jaffee Date: Fri, 26 May 2017 11:32:20 -0500 Subject: [PATCH] fix tests, prep for union rle implementations --- roaring/roaring.go | 24 ++++++++++++++++++++++++ roaring/roaring_internal_test.go | 8 ++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/roaring/roaring.go b/roaring/roaring.go index 81fce64c6..95fcaed15 100644 --- a/roaring/roaring.go +++ b/roaring/roaring.go @@ -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)) diff --git a/roaring/roaring_internal_test.go b/roaring/roaring_internal_test.go index d31b4e237..91e256e05 100644 --- a/roaring/roaring_internal_test.go +++ b/roaring/roaring_internal_test.go @@ -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) } }