aria2/test/GeomStreamPieceSelectorTest.cc
Tatsuhiro Tsujikawa c7ac147287 Added PieceStorage::onDownloadIncomplete() virtual function.
In DefaultPieceStorage::onDownloadIncomplete(), we call
StreamPieceSelector::onBitfieldInit().
Added GeomStreamPieceSelectorTest.
2011-08-24 23:16:06 +09:00

51 lines
1.3 KiB
C++

#include "GeomStreamPieceSelector.h"
#include <cstring>
#include <cppunit/extensions/HelperMacros.h>
#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