PriorityPieceSelectorTest.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "PriorityPieceSelector.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "array_fun.h"
  4. #include "BitfieldMan.h"
  5. #include "MockPieceSelector.h"
  6. namespace aria2 {
  7. class PriorityPieceSelectorTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(PriorityPieceSelectorTest);
  9. CPPUNIT_TEST(testSelect);
  10. CPPUNIT_TEST_SUITE_END();
  11. public:
  12. void testSelect();
  13. };
  14. CPPUNIT_TEST_SUITE_REGISTRATION(PriorityPieceSelectorTest);
  15. void PriorityPieceSelectorTest::testSelect()
  16. {
  17. size_t pieceLength = 1024;
  18. size_t A[] = { 1,200};
  19. BitfieldMan bf(pieceLength, pieceLength*256);
  20. for(size_t i = 0; i < A2_ARRAY_LEN(A); ++i) {
  21. bf.setBit(A[i]);
  22. }
  23. PriorityPieceSelector selector
  24. (SharedHandle<PieceSelector>(new MockPieceSelector()));
  25. selector.setPriorityPiece(vbegin(A), vend(A));
  26. size_t index;
  27. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
  28. CPPUNIT_ASSERT_EQUAL((size_t)1, index);
  29. bf.unsetBit(1);
  30. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
  31. CPPUNIT_ASSERT_EQUAL((size_t)200, index);
  32. bf.unsetBit(200);
  33. CPPUNIT_ASSERT(!selector.select(index, bf.getBitfield(), bf.countBlock()));
  34. }
  35. } // namespace aria2