MCPcopy
hub / github.com/RoaringBitmap/roaring / rTest

Function rTest

roaring_test.go:2551–2602  ·  view source on GitHub ↗
(t *testing.T, N int)

Source from the content-addressed store, hash-verified

2549}
2550
2551func rTest(t *testing.T, N int) {
2552 for gap := 1; gap <= 65536; gap *= 2 {
2553 bs1 := bitset.New(0)
2554 rb1 := NewBitmap()
2555 for x := 0; x <= N; x += gap {
2556 bs1.Set(uint(x))
2557 rb1.AddInt(x)
2558 }
2559
2560 assert.EqualValues(t, rb1.GetCardinality(), bs1.Count())
2561 assert.True(t, equalsBitSet(bs1, rb1))
2562
2563 for offset := 1; offset <= gap; offset *= 2 {
2564 bs2 := bitset.New(0)
2565 rb2 := NewBitmap()
2566 for x := 0; x <= N; x += gap {
2567 bs2.Set(uint(x + offset))
2568 rb2.AddInt(x + offset)
2569 }
2570
2571 assert.EqualValues(t, rb2.GetCardinality(), bs2.Count())
2572 assert.True(t, equalsBitSet(bs2, rb2))
2573
2574 clonebs1 := bs1.Clone()
2575 clonebs1.InPlaceIntersection(bs2)
2576
2577 if !equalsBitSet(clonebs1, And(rb1, rb2)) {
2578 v := rb1.Clone()
2579 v.And(rb2)
2580 assert.True(t, equalsBitSet(clonebs1, v))
2581 }
2582
2583 // testing OR
2584 clonebs1 = bs1.Clone()
2585 clonebs1.InPlaceUnion(bs2)
2586
2587 assert.True(t, equalsBitSet(clonebs1, Or(rb1, rb2)))
2588
2589 // testing XOR
2590 clonebs1 = bs1.Clone()
2591 clonebs1.InPlaceSymmetricDifference(bs2)
2592
2593 assert.True(t, equalsBitSet(clonebs1, Xor(rb1, rb2)))
2594
2595 // testing NOTAND
2596 clonebs1 = bs1.Clone()
2597 clonebs1.InPlaceDifference(bs2)
2598
2599 assert.True(t, equalsBitSet(clonebs1, AndNot(rb1, rb2)))
2600 }
2601 }
2602}
2603
2604func equalsBitSet(a *bitset.BitSet, b *Bitmap) bool {
2605 for i, e := a.NextSet(0); e; i, e = a.NextSet(i + 1) {

Callers 2

TestBitmapFunction · 0.70
TestBigRandomFunction · 0.70

Calls 10

AddIntMethod · 0.95
GetCardinalityMethod · 0.95
CloneMethod · 0.95
NewBitmapFunction · 0.70
equalsBitSetFunction · 0.70
AndFunction · 0.70
OrFunction · 0.70
XorFunction · 0.70
AndNotFunction · 0.70
AndMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…