summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-24 23:16:06 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-24 23:16:06 +0900
commitc7ac14728730d683ca281f9b5dbbac9f3ceaeafa (patch)
treebfb4b6684db67bafe12706dce4599d5666630350 /test
parentb94bf3355b349f6d7824a1ab67c7a1d695e9314a (diff)
Added PieceStorage::onDownloadIncomplete() virtual function.
In DefaultPieceStorage::onDownloadIncomplete(), we call StreamPieceSelector::onBitfieldInit(). Added GeomStreamPieceSelectorTest.
Diffstat (limited to 'test')
-rw-r--r--test/GeomStreamPieceSelectorTest.cc50
-rw-r--r--test/Makefile.am3
-rw-r--r--test/MockPieceStorage.h2
3 files changed, 54 insertions, 1 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
diff --git a/test/Makefile.am b/test/Makefile.am
index 22974743..75238703 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -80,7 +80,8 @@ aria2c_SOURCES = AllTest.cc\
JsonTest.cc\
RpcResponseTest.cc\
RpcMethodTest.cc\
- BufferedFileTest.cc
+ BufferedFileTest.cc\
+ GeomStreamPieceSelectorTest.cc
if ENABLE_XML_RPC
aria2c_SOURCES += XmlRpcRequestParserControllerTest.cc\
diff --git a/test/MockPieceStorage.h b/test/MockPieceStorage.h
index 94a44f92..8b1cb631 100644
--- a/test/MockPieceStorage.h
+++ b/test/MockPieceStorage.h
@@ -280,6 +280,8 @@ public:
{
return 0;
}
+
+ virtual void onDownloadIncomplete() {}
};
} // namespace aria2