diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-28 13:29:38 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-03-28 13:29:38 +0000 |
| commit | a6b02840fa79e3e7cb82e472ff5660fda86842c1 (patch) | |
| tree | 2d49c972a80b013dbcba2c8b32c56a5d290f9a46 /test/LongestSequencePieceSelectorTest.cc | |
| parent | 3531d57d3791f71ccb04c3d2ee238b2c2087ef82 (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.cc | 17 |
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); } |
