summaryrefslogtreecommitdiff
path: root/test/LongestSequencePieceSelectorTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-28 13:29:38 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-03-28 13:29:38 +0000
commita6b02840fa79e3e7cb82e472ff5660fda86842c1 (patch)
tree2d49c972a80b013dbcba2c8b32c56a5d290f9a46 /test/LongestSequencePieceSelectorTest.cc
parent3531d57d3791f71ccb04c3d2ee238b2c2087ef82 (diff)
2009-03-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
BitfieldMan::getMissingIndexes family functions now takes unsigned char* bitfield instead of stl container for efficiency. PieceSelector::select now takes this bitfield. RarestPieceSelector::select now also performs efficiently for this change. bitfield namespace is introduced and it has several helper functions to handle basic bitfield operations such as test, count set bits, etc. * src/BitfieldMan.cc * src/BitfieldMan.h * src/DefaultBtRequestFactory.cc * src/DefaultPieceStorage.cc * src/DefaultPieceStorage.h * src/LongestSequencePieceSelector.cc * src/LongestSequencePieceSelector.h * src/Makefile.am * src/Piece.cc * src/Piece.h * src/PieceSelector.h * src/RarestPieceSelector.cc * src/RarestPieceSelector.h * src/Util.cc * src/Util.h * src/bitfield.h * test/BitfieldManTest.cc * test/LongestSequencePieceSelectorTest.cc * test/Makefile.am * test/RarestPieceSelectorTest.cc * test/UtilTest.cc * test/bitfieldTest.cc
Diffstat (limited to 'test/LongestSequencePieceSelectorTest.cc')
-rw-r--r--test/LongestSequencePieceSelectorTest.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/test/LongestSequencePieceSelectorTest.cc b/test/LongestSequencePieceSelectorTest.cc
index d3b85593..23739a42 100644
--- a/test/LongestSequencePieceSelectorTest.cc
+++ b/test/LongestSequencePieceSelectorTest.cc
@@ -3,6 +3,7 @@
#include <cppunit/extensions/HelperMacros.h>
#include "array_fun.h"
+#include "BitfieldMan.h"
namespace aria2 {
@@ -25,19 +26,23 @@ CPPUNIT_TEST_SUITE_REGISTRATION(LongestSequencePieceSelectorTest);
void LongestSequencePieceSelectorTest::testSelect()
{
size_t A[] = { 1,2,3,4,7,10,11,12,13,14,15,100,112,113,114 };
- std::deque<size_t> indexes(&A[0], &A[arrayLength(A)]);
+ BitfieldMan bf(1024, 1024*256);
+ for(size_t i = 0; i < arrayLength(A); ++i) {
+ bf.setBit(A[i]);
+ }
LongestSequencePieceSelector selector;
size_t index;
- CPPUNIT_ASSERT(selector.select(index, indexes));
+ CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
CPPUNIT_ASSERT_EQUAL((size_t)15, index);
- std::deque<size_t> zeroindexes;
- CPPUNIT_ASSERT(!selector.select(index, zeroindexes));
+ bf.clearAllBit();
+ CPPUNIT_ASSERT(!selector.select(index, bf.getBitfield(), bf.countBlock()));
- std::deque<size_t> oneseq(&A[0], &A[4]);
- CPPUNIT_ASSERT(selector.select(index, oneseq));
+ // See it works in just one range
+ bf.setBitRange(1, 4);
+ CPPUNIT_ASSERT(selector.select(index, bf.getBitfield(), bf.countBlock()));
CPPUNIT_ASSERT_EQUAL((size_t)4, index);
}