From 2e540d275cab483f640341c37d2b9b1fb0d9112b Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Thu, 1 Jun 2017 14:21:46 -0500 Subject: [PATCH] Expand bitmap-run conversion tests --- roaring/roaring_internal_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/roaring/roaring_internal_test.go b/roaring/roaring_internal_test.go index e6643e5f5..193423a61 100644 --- a/roaring/roaring_internal_test.go +++ b/roaring/roaring_internal_test.go @@ -749,6 +749,10 @@ func TestRunToBitmap(t *testing.T) { runs: []interval32{{start: 2, last: 2}, {start: 5, last: 7}, {start: 13, last: 14}, {start: 17, last: 17}}, exp: []uint64{155876}, }, + { + runs: []interval32{{start: 0, last: 3}, {start: 60, last: 67}}, + exp: []uint64{0xF00000000000000F, 0x000000000000000F}, + }, } for i, test := range tests { @@ -772,17 +776,40 @@ func TestBitmapToRun(t *testing.T) { exp []interval32 }{ { + // single-bit run bitmap: []uint64{1}, exp: []interval32{{start: 0, last: 0}}, }, { + // single multi-bit run in one word bitmap: []uint64{31}, exp: []interval32{{start: 0, last: 4}}, }, { + // multiple runs in one word bitmap: []uint64{155876}, exp: []interval32{{start: 2, last: 2}, {start: 5, last: 7}, {start: 13, last: 14}, {start: 17, last: 17}}, }, + { + // span two words, both mixed + bitmap: []uint64{0xF00000000000000F, 0x000000000000000F}, + exp: []interval32{{start: 0, last: 3}, {start: 60, last: 67}}, + }, + { + // span two words, first = maxBitmap + bitmap: []uint64{0xFFFFFFFFFFFFFFFF, 0xF}, + exp: []interval32{{start: 0, last: 67}}, + }, + { + // span two words, second = maxBitmap + bitmap: []uint64{0xF000000000000000, 0xFFFFFFFFFFFFFFFF}, + exp: []interval32{{start: 60, last: 127}}, + }, + { + // span three words + bitmap: []uint64{0xF000000000000000, 0xFFFFFFFFFFFFFFFF, 0xF}, + exp: []interval32{{start: 60, last: 131}}, + }, } for i, test := range tests {