예제 #1
0
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());
    }
}
예제 #2
0
ByteVecotrPtr VLC_HuffmanDecoder::transitData(BitVectorPtr src)
{
	ByteVecotrPtr ret = ByteVecotrPtr(new ByteVecotr());
	ret->clear();

	huffmanTree->Root();

	for (BitVector::size_type i = 0; i < src->size(); i++ )
	{
		bool bit = (*src)[i];
		if (!bit)
		{
			huffmanTree->FirstChild();
		}
		else
		{
			huffmanTree->FirstChild();
			huffmanTree->NextSibling();
		}

		if (huffmanTree->IsLeaf())
		{
			stKey val = huffmanTree->GetCurrentData().GrayScale;
			ret->push_back(val);
			huffmanTree->Root();
		}
	}

	return ret;
}
예제 #3
0
static void doTestGetSetVectorOfSize(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));
    }
}
예제 #4
0
static bool compareBitVectors(BitVectorPtr bv, BitVectorPtr compare)
{
    for (int32_t i = 0; i < bv->size(); ++i)
    {
        // bits must be equal
        if (bv->get(i) != compare->get(i))
            return false;
    }
    return true;
}
예제 #5
0
/// Compare a subset against the corresponding portion of the test pattern
static void doTestSubset(int32_t start, int32_t end)
{
    BitVectorPtr full = createSubsetTestVector();
    BitVectorPtr subset = full->subset(start, end);
    BOOST_CHECK_EQUAL(end - start, subset->size());
    int32_t count = 0;
    for (int32_t i = start, j = 0; i < end; ++i, ++j)
    {
        if (subsetPattern[i] == 1)
        {
            ++count;
            BOOST_CHECK(subset->get(j));
        }
        else
            BOOST_CHECK(!subset->get(j));
    }
    BOOST_CHECK_EQUAL(count, subset->count());
}
예제 #6
0
static void doTestWriteRead(int32_t n)
{
    DirectoryPtr d = newLucene<RAMDirectory>();
    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->write(d, L"TESTBV");
        BitVectorPtr compare = newLucene<BitVector>(d, L"TESTBV");
        // compare bit vectors with bits set incrementally
        BOOST_CHECK(compareBitVectors(bv, compare));
    }
}
예제 #7
0
static void doTestConstructOfSize(int32_t n)
{
    BitVectorPtr bv = newLucene<BitVector>(n);
    BOOST_CHECK_EQUAL(n, bv->size());
}