aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/common/bitvector/bitvector_test.cpp
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 17:26:45 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 17:26:45 +0200
commit4f1bcbaee6992f2e53c83c95d883dbbee747215d (patch)
treeae95d24c5d00e63ae69dc28ba631def57c938258 /searchlib/src/tests/common/bitvector/bitvector_test.cpp
parent1c1cf96a82a7df08ebe5259463cca22c4a9cb69b (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.cpp31
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());
+ }
+ }
}