LongestSequencePieceSelectorTest.cc 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "LongestSequencePieceSelector.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "array_fun.h"
  4. #include "BitfieldMan.h"
  5. namespace aria2 {
  6. class LongestSequencePieceSelectorTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(LongestSequencePieceSelectorTest);
  8. CPPUNIT_TEST(testSelect);
  9. CPPUNIT_TEST_SUITE_END();
  10. public:
  11. void setUp() {}
  12. void tearDown() {}
  13. void testSelect();
  14. };
  15. CPPUNIT_TEST_SUITE_REGISTRATION(LongestSequencePieceSelectorTest);
  16. void LongestSequencePieceSelectorTest::testSelect()
  17. {
  18. size_t A[] = { 1,2,3,4,7,10,11,12,13,14,15,100,112,113,114 };
  19. BitfieldMan bf(1024, 1024*256);
  20. for(size_t i = 0; i < arraySize(A); ++i) {
  21. bf.setBit(A[i]);
  22. }
  23. LongestSequencePieceSelector selector;
  24. size_t index;
  25. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
  26. CPPUNIT_ASSERT_EQUAL((size_t)15, index);
  27. bf.clearAllBit();
  28. CPPUNIT_ASSERT(!selector.select(index, bf.getBitfield(), bf.countBlock()));
  29. // See it works in just one range
  30. bf.setBitRange(1, 4);
  31. CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
  32. CPPUNIT_ASSERT_EQUAL((size_t)4, index);
  33. }
  34. } // namespace aria2