diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-08-24 23:16:06 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-08-24 23:16:06 +0900 |
| commit | c7ac14728730d683ca281f9b5dbbac9f3ceaeafa (patch) | |
| tree | bfb4b6684db67bafe12706dce4599d5666630350 /test/GeomStreamPieceSelectorTest.cc | |
| parent | b94bf3355b349f6d7824a1ab67c7a1d695e9314a (diff) | |
Added PieceStorage::onDownloadIncomplete() virtual function.
In DefaultPieceStorage::onDownloadIncomplete(), we call
StreamPieceSelector::onBitfieldInit().
Added GeomStreamPieceSelectorTest.
Diffstat (limited to 'test/GeomStreamPieceSelectorTest.cc')
| -rw-r--r-- | test/GeomStreamPieceSelectorTest.cc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/GeomStreamPieceSelectorTest.cc b/test/GeomStreamPieceSelectorTest.cc new file mode 100644 index 00000000..13de0611 --- /dev/null +++ b/test/GeomStreamPieceSelectorTest.cc @@ -0,0 +1,50 @@ +#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 |
