RarestPieceSelectorTest.cc 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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(), bf.countBlock()));
  30. CPPUNIT_ASSERT_EQUAL((size_t)1, index);
  31. pieceStatMan->addPieceStats(1);
  32. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
  33. CPPUNIT_ASSERT_EQUAL((size_t)2, index);
  34. }
  35. } // namespace aria2