diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-02 17:26:45 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-02 17:26:45 +0200 |
commit | 4f1bcbaee6992f2e53c83c95d883dbbee747215d (patch) | |
tree | ae95d24c5d00e63ae69dc28ba631def57c938258 /searchlib/src/tests/common/bitvector/bitvector_test.cpp | |
parent | 1c1cf96a82a7df08ebe5259463cca22c4a9cb69b (diff) |
Add some more tests for clearInterval
Diffstat (limited to 'searchlib/src/tests/common/bitvector/bitvector_test.cpp')
-rw-r--r-- | searchlib/src/tests/common/bitvector/bitvector_test.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/searchlib/src/tests/common/bitvector/bitvector_test.cpp b/searchlib/src/tests/common/bitvector/bitvector_test.cpp index d3de19654b4..c1170869c26 100644 --- a/searchlib/src/tests/common/bitvector/bitvector_test.cpp +++ b/searchlib/src/tests/common/bitvector/bitvector_test.cpp @@ -433,6 +433,20 @@ TEST("requireThatSetWorks") EXPECT_TRUE(assertBV("[7,39,57,80,103]", v1)); } +TEST("test BitWord::startBits/endBits") { + EXPECT_EQUAL(BitWord::startBits(0), 0x00ul); + EXPECT_EQUAL(BitWord::startBits(1), 0x01ul); + EXPECT_EQUAL(BitWord::startBits(2), 0x03ul); + EXPECT_EQUAL(BitWord::startBits(61), 0x1ffffffffffffffful); + EXPECT_EQUAL(BitWord::startBits(62), 0x3ffffffffffffffful); + EXPECT_EQUAL(BitWord::startBits(63), 0x7ffffffffffffffful); + EXPECT_EQUAL(BitWord::endBits(0), 0xfffffffffffffffeul); + EXPECT_EQUAL(BitWord::endBits(1), 0xfffffffffffffffcul); + EXPECT_EQUAL(BitWord::endBits(2), 0xfffffffffffffff8ul); + EXPECT_EQUAL(BitWord::endBits(61), 0xc000000000000000ul); + EXPECT_EQUAL(BitWord::endBits(62), 0x8000000000000000ul); + EXPECT_EQUAL(BitWord::endBits(63), 0x0000000000000000ul); +} TEST("requireThatClearIntervalWorks") { @@ -454,6 +468,23 @@ TEST("requireThatClearIntervalWorks") EXPECT_TRUE(assertBV("[7,103,200,500]", v1)); v1.clearInterval(20, 501); EXPECT_TRUE(assertBV("[7]", v1)); + + AllocatedBitVector v(400); + for (size_t intervalLength(1); intervalLength < 100; intervalLength++) { + for (size_t offset(100); offset < 200; offset++) { + + v.clear(); + v.notSelf(); + EXPECT_EQUAL(400u, v.countTrueBits()); + + v.clearInterval(offset, offset+intervalLength); + EXPECT_FALSE(v.testBit(offset)); + EXPECT_TRUE(v.testBit(offset-1)); + EXPECT_FALSE(v.testBit(offset+intervalLength-1)); + EXPECT_TRUE(v.testBit(offset+intervalLength)); + EXPECT_EQUAL(400 - intervalLength, v.countTrueBits()); + } + } } |