Skip to content

Commit 26053d3

Browse files
authored
Merge pull request #267 from RoaringBitmap/dlemire/better_tests
Fix for issue 266.
2 parents 735d3ae + 7e5a157 commit 26053d3

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

roaring64/iterables64.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package roaring64
22

3-
import "github.com/RoaringBitmap/roaring"
3+
import (
4+
"github.com/RoaringBitmap/roaring"
5+
)
46

57
// IntIterable64 allows you to iterate over the values in a Bitmap
68
type IntIterable64 interface {
@@ -33,13 +35,14 @@ func (ii *intIterator) HasNext() bool {
3335
func (ii *intIterator) init() {
3436
if ii.highlowcontainer.size() > ii.pos {
3537
ii.iter = ii.highlowcontainer.getContainerAtIndex(ii.pos).Iterator()
36-
ii.hs = uint64(ii.highlowcontainer.getKeyAtIndex(ii.pos)) << 16
38+
ii.hs = uint64(ii.highlowcontainer.getKeyAtIndex(ii.pos)) << 32
3739
}
3840
}
3941

4042
// Next returns the next integer
4143
func (ii *intIterator) Next() uint64 {
42-
x := uint64(ii.iter.Next()) | ii.hs
44+
lowbits := ii.iter.Next()
45+
x := uint64(lowbits) | ii.hs
4346
if !ii.iter.HasNext() {
4447
ii.pos = ii.pos + 1
4548
ii.init()

roaring64/roaring64_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package roaring64
22

33
import (
4+
"fmt"
45
"log"
56
"math"
67
"math/rand"
@@ -26,6 +27,26 @@ func TestRoaringIntervalCheck(t *testing.T) {
2627
assert.False(t, r.Intersects(rangeb2))
2728
}
2829

30+
func TestIssue266(t *testing.T) {
31+
r := BitmapOf(12345, 5764607714248818780)
32+
assert.EqualValues(t, 2, r.GetCardinality())
33+
assert.EqualValues(t, 2, r.GetCardinality())
34+
assert.EqualValues(t, true, r.Contains(12345))
35+
assert.EqualValues(t, true, r.Contains(5764607714248818780))
36+
37+
i := r.Iterator()
38+
39+
if assert.True(t, i.HasNext()) {
40+
assert.EqualValues(t, 12345, i.Next())
41+
if assert.True(t, i.HasNext()) {
42+
assert.EqualValues(t, uint64(5764607714248818780), i.Next())
43+
assert.False(t, i.HasNext())
44+
}
45+
}
46+
47+
fmt.Println(r.String())
48+
}
49+
2950
func TestRoaringRangeEnd(t *testing.T) {
3051
r := New()
3152
r.Add(roaring.MaxUint32)

0 commit comments

Comments
 (0)