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