summaryrefslogtreecommitdiff
path: root/test/DHTTaskExecutorTest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/DHTTaskExecutorTest.cc')
-rw-r--r--test/DHTTaskExecutorTest.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/DHTTaskExecutorTest.cc b/test/DHTTaskExecutorTest.cc
new file mode 100644
index 00000000..f66695bd
--- /dev/null
+++ b/test/DHTTaskExecutorTest.cc
@@ -0,0 +1,48 @@
+#include "DHTTaskExecutor.h"
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "MockDHTTask.h"
+#include "array_fun.h"
+
+namespace aria2 {
+
+class DHTTaskExecutorTest:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(DHTTaskExecutorTest);
+ CPPUNIT_TEST(testUpdate);
+ CPPUNIT_TEST_SUITE_END();
+public:
+ void testUpdate();
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION(DHTTaskExecutorTest);
+
+void DHTTaskExecutorTest::testUpdate()
+{
+ SharedHandle<DHTNode> rn;
+ DHTTaskExecutor tex(2);
+ SharedHandle<MockDHTTask> tasks[] = {
+ SharedHandle<MockDHTTask>(new MockDHTTask(rn)),
+ SharedHandle<MockDHTTask>(new MockDHTTask(rn)),
+ SharedHandle<MockDHTTask>(new MockDHTTask(rn)),
+ SharedHandle<MockDHTTask>(new MockDHTTask(rn))
+ };
+ tasks[1]->finished_ = true;
+ for(size_t i = 0; i < A2_ARRAY_LEN(tasks); ++i) {
+ tex.addTask(tasks[i]);
+ }
+ CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize());
+ CPPUNIT_ASSERT_EQUAL((size_t)4, tex.getQueueSize());
+ tex.update();
+ CPPUNIT_ASSERT_EQUAL((size_t)2, tex.getExecutingTaskSize());
+ CPPUNIT_ASSERT_EQUAL((size_t)1, tex.getQueueSize());
+ tasks[0]->finished_ = true;
+ tasks[2]->finished_ = true;
+ tasks[3]->finished_ = true;
+ tex.update();
+ CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize());
+ CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getQueueSize());
+}
+
+} // namespace aria2