#include "GeomStreamPieceSelector.h" #include #include #include "Exception.h" #include "util.h" #include "BitfieldMan.h" namespace aria2 { class GeomStreamPieceSelectorTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(GeomStreamPieceSelectorTest); CPPUNIT_TEST(testOnBitfieldInit); CPPUNIT_TEST_SUITE_END(); public: void testOnBitfieldInit(); }; CPPUNIT_TEST_SUITE_REGISTRATION(GeomStreamPieceSelectorTest); void GeomStreamPieceSelectorTest::testOnBitfieldInit() { BitfieldMan bf(1024, 1024*20); bf.setBitRange(0, 10); GeomStreamPieceSelector sel(&bf, 2); sel.onBitfieldInit(); unsigned char igbf[3]; memset(igbf, 0, 3); size_t index; // 11111|11111|00000|00000 CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf))); CPPUNIT_ASSERT_EQUAL((size_t)11, index); bf.setUseBit(11); // 11111|11111|10000|00000 CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf))); CPPUNIT_ASSERT_EQUAL((size_t)12, index); bf.setUseBit(12); // 11111|11111|11000|00000 CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf))); CPPUNIT_ASSERT_EQUAL((size_t)13, index); bf.setUseBit(13); // 11111|11111|11100|00000 CPPUNIT_ASSERT(sel.select(index, 1024*20, igbf, sizeof(igbf))); CPPUNIT_ASSERT_EQUAL((size_t)15, index); } } // namespace aria2