static void doTestCountVectorOfSize(int32_t n) { BitVectorPtr bv = newLucene<BitVector>(n); // test count when incrementally setting bits for (int32_t i = 0; i < bv->size(); ++i) { BOOST_CHECK(!bv->get(i)); BOOST_CHECK_EQUAL(i, bv->count()); bv->set(i); BOOST_CHECK(bv->get(i)); BOOST_CHECK_EQUAL(i + 1, bv->count()); } bv = newLucene<BitVector>(n); // test count when setting then clearing bits for (int32_t i = 0; i < bv->size(); ++i) { BOOST_CHECK(!bv->get(i)); BOOST_CHECK_EQUAL(0, bv->count()); bv->set(i); BOOST_CHECK(bv->get(i)); BOOST_CHECK_EQUAL(1, bv->count()); bv->clear(i); BOOST_CHECK(!bv->get(i)); BOOST_CHECK_EQUAL(0, bv->count()); } }
static void doTestDgaps(int32_t size, int32_t count1, int32_t count2) { DirectoryPtr d = newLucene<RAMDirectory>(); BitVectorPtr bv = newLucene<BitVector>(size); for (int32_t i = 0; i < count1; ++i) { bv->set(i); BOOST_CHECK_EQUAL(i + 1, bv->count()); } bv->write(d, L"TESTBV"); // gradually increase number of set bits for (int32_t i = count1; i < count2; ++i) { BitVectorPtr bv2 = newLucene<BitVector>(d, L"TESTBV"); BOOST_CHECK(compareBitVectors(bv, bv2)); bv = bv2; bv->set(i); BOOST_CHECK_EQUAL(i + 1, bv->count()); bv->write(d, L"TESTBV"); } // now start decreasing number of set bits for (int32_t i = count2 - 1; i >= count1; --i) { BitVectorPtr bv2 = newLucene<BitVector>(d, L"TESTBV"); BOOST_CHECK(compareBitVectors(bv, bv2)); bv = bv2; bv->clear(i); BOOST_CHECK_EQUAL(i, bv->count()); bv->write(d, L"TESTBV"); } }
static void doTestClearVectorOfSize(int32_t n) { BitVectorPtr bv = newLucene<BitVector>(n); for (int32_t i = 0; i < bv->size(); ++i) { BOOST_CHECK(!bv->get(i)); bv->set(i); BOOST_CHECK(bv->get(i)); bv->clear(i); BOOST_CHECK(!bv->get(i)); } }