RarestPieceSelectorTest.cc 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "RarestPieceSelector.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "BitfieldMan.h"
  4. #include "PieceStatMan.h"
  5. #include "a2functional.h"
  6. namespace aria2 {
  7. class RarestPieceSelectorTest:public CppUnit::TestFixture {
  8. CPPUNIT_TEST_SUITE(RarestPieceSelectorTest);
  9. CPPUNIT_TEST(testSelect);
  10. CPPUNIT_TEST_SUITE_END();
  11. public:
  12. void setUp() {}
  13. void tearDown() {}
  14. void testAddPieceStats_index();
  15. void testAddPieceStats_bitfield();
  16. void testUpdatePieceStats();
  17. void testSubtractPieceStats();
  18. void testSelect();
  19. };
  20. CPPUNIT_TEST_SUITE_REGISTRATION(RarestPieceSelectorTest);
  21. void RarestPieceSelectorTest::testSelect()
  22. {
  23. std::shared_ptr<PieceStatMan> pieceStatMan(new PieceStatMan(10, false));
  24. RarestPieceSelector selector(pieceStatMan);
  25. BitfieldMan bf(1_k, 10_k);
  26. bf.setBitRange(0, 2);
  27. size_t index;
  28. pieceStatMan->addPieceStats(0);
  29. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(),
  30. bf.countBlock()));
  31. CPPUNIT_ASSERT_EQUAL((size_t)1, index);
  32. pieceStatMan->addPieceStats(1);
  33. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(),
  34. bf.countBlock()));
  35. CPPUNIT_ASSERT_EQUAL((size_t)2, index);
  36. }
  37. } // namespace aria2