DHTTaskExecutorTest.cc 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "DHTTaskExecutor.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "MockDHTTask.h"
  4. #include "array_fun.h"
  5. namespace aria2 {
  6. class DHTTaskExecutorTest : public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(DHTTaskExecutorTest);
  8. CPPUNIT_TEST(testUpdate);
  9. CPPUNIT_TEST_SUITE_END();
  10. public:
  11. void testUpdate();
  12. };
  13. CPPUNIT_TEST_SUITE_REGISTRATION(DHTTaskExecutorTest);
  14. void DHTTaskExecutorTest::testUpdate()
  15. {
  16. std::shared_ptr<DHTNode> rn;
  17. DHTTaskExecutor tex(2);
  18. std::shared_ptr<MockDHTTask> tasks[] = {
  19. std::shared_ptr<MockDHTTask>(new MockDHTTask(rn)),
  20. std::shared_ptr<MockDHTTask>(new MockDHTTask(rn)),
  21. std::shared_ptr<MockDHTTask>(new MockDHTTask(rn)),
  22. std::shared_ptr<MockDHTTask>(new MockDHTTask(rn))};
  23. tasks[1]->finished_ = true;
  24. for (size_t i = 0; i < arraySize(tasks); ++i) {
  25. tex.addTask(tasks[i]);
  26. }
  27. CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize());
  28. CPPUNIT_ASSERT_EQUAL((size_t)4, tex.getQueueSize());
  29. tex.update();
  30. CPPUNIT_ASSERT_EQUAL((size_t)2, tex.getExecutingTaskSize());
  31. CPPUNIT_ASSERT_EQUAL((size_t)1, tex.getQueueSize());
  32. tasks[0]->finished_ = true;
  33. tasks[2]->finished_ = true;
  34. tasks[3]->finished_ = true;
  35. tex.update();
  36. CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getExecutingTaskSize());
  37. CPPUNIT_ASSERT_EQUAL((size_t)0, tex.getQueueSize());
  38. }
  39. } // namespace aria2