(t *testing.T, N int)
| 1526 | } |
| 1527 | |
| 1528 | func 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 | |
| 1582 | func equalsBitSet(a *bitset.BitSet, b *Bitmap) bool { |
| 1583 | for i, e := a.NextSet(0); e; i, e = a.NextSet(i + 1) { |
no test coverage detected
searching dependent graphs…