MCPcopy Create free account
hub / github.com/RoaringBitmap/roaring / rTest

Function rTest

roaring64/roaring64_test.go:1528–1580  ·  view source on GitHub ↗
(t *testing.T, N int)

Source from the content-addressed store, hash-verified

1526}
1527
1528func rTest(t *testing.T, N int) {
1529 t.Log("rtest N=", N)
1530 for gap := 1; gap <= 65536; gap *= 2 {
1531 bs1 := bitset.New(0)
1532 rb1 := NewBitmap()
1533 for x := 0; x <= N; x += gap {
1534 bs1.Set(uint(x))
1535 rb1.AddInt(x)
1536 }
1537
1538 assert.EqualValues(t, rb1.GetCardinality(), bs1.Count())
1539 assert.True(t, equalsBitSet(bs1, rb1))
1540
1541 for offset := 1; offset <= gap; offset *= 2 {
1542 bs2 := bitset.New(0)
1543 rb2 := NewBitmap()
1544 for x := 0; x <= N; x += gap {
1545 bs2.Set(uint(x + offset))
1546 rb2.AddInt(x + offset)
1547 }
1548
1549 assert.EqualValues(t, rb2.GetCardinality(), bs2.Count())
1550 assert.True(t, equalsBitSet(bs2, rb2))
1551
1552 clonebs1 := bs1.Clone()
1553 clonebs1.InPlaceIntersection(bs2)
1554
1555 if !equalsBitSet(clonebs1, And(rb1, rb2)) {
1556 v := rb1.Clone()
1557 v.And(rb2)
1558 assert.True(t, equalsBitSet(clonebs1, v))
1559 }
1560
1561 // testing OR
1562 clonebs1 = bs1.Clone()
1563 clonebs1.InPlaceUnion(bs2)
1564
1565 assert.True(t, equalsBitSet(clonebs1, Or(rb1, rb2)))
1566
1567 // testing XOR
1568 clonebs1 = bs1.Clone()
1569 clonebs1.InPlaceSymmetricDifference(bs2)
1570
1571 assert.True(t, equalsBitSet(clonebs1, Xor(rb1, rb2)))
1572
1573 // testing NOTAND
1574 clonebs1 = bs1.Clone()
1575 clonebs1.InPlaceDifference(bs2)
1576
1577 assert.True(t, equalsBitSet(clonebs1, AndNot(rb1, rb2)))
1578 }
1579 }
1580}
1581
1582func equalsBitSet(a *bitset.BitSet, b *Bitmap) bool {
1583 for i, e := a.NextSet(0); e; i, e = a.NextSet(i + 1) {

Callers 2

TestBitmapFunction · 0.70
TestBigRandomFunction · 0.70

Calls 11

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
CloneMethod · 0.45
AndMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…