summaryrefslogtreecommitdiff
path: root/test/BitfieldManTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-11 07:37:46 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-05-11 07:37:46 +0000
commitbf5a8c3f78a50eec048fff8a7068fee3d48c8d1e (patch)
tree70a691e701592a61f895f4267a8ae1e07a3be3b4 /test/BitfieldManTest.cc
parenta702d6066648e95928bf4f23487ea4cd6f931f14 (diff)
2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
In piece selection functions, Pass std::deque<...> by reference rather than returning it. * src/BitfieldMan.cc * src/BitfieldMan.h * src/DefaultBtRequestFactory.cc * src/DefaultPieceStorage.cc * src/Piece.cc * src/Piece.h * test/BitfieldManTest.cc
Diffstat (limited to 'test/BitfieldManTest.cc')
-rw-r--r--test/BitfieldManTest.cc63
1 files changed, 55 insertions, 8 deletions
diff --git a/test/BitfieldManTest.cc b/test/BitfieldManTest.cc
index 00451fbc..2ab8e936 100644
--- a/test/BitfieldManTest.cc
+++ b/test/BitfieldManTest.cc
@@ -21,6 +21,7 @@ class BitfieldManTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testSetBitRange);
CPPUNIT_TEST(testGetAllMissingIndexes);
CPPUNIT_TEST(testGetAllMissingIndexes_noarg);
+ CPPUNIT_TEST(testGetAllMissingUnusedIndexes);
CPPUNIT_TEST(testGetMissingUnusedIndex);
CPPUNIT_TEST(testGetMissingIndex_noarg);
CPPUNIT_TEST(testGetMissingUnusedIndex_noarg);
@@ -48,7 +49,8 @@ public:
void testGetMissingUnusedIndex_noarg();
void testGetAllMissingIndexes();
void testGetAllMissingIndexes_noarg();
-
+ void testGetAllMissingUnusedIndexes();
+
void testIsAllBitSet();
void testFilter();
void testGetSparceMissingUnusedIndex();
@@ -594,12 +596,20 @@ void BitfieldManTest::testGetAllMissingIndexes_noarg()
uint64_t totalLength = 1024*1024;
BitfieldMan bf(blockLength, totalLength);
- CPPUNIT_ASSERT_EQUAL((size_t)64, bf.getAllMissingIndexes().size());
+ {
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingIndexes(indexes));
+ CPPUNIT_ASSERT_EQUAL((size_t)64, indexes.size());
+ }
for(size_t i = 0; i < 63; ++i) {
bf.setBit(i);
}
- CPPUNIT_ASSERT_EQUAL((size_t)1, bf.getAllMissingIndexes().size());
- CPPUNIT_ASSERT_EQUAL((size_t)63, bf.getAllMissingIndexes().front());
+ {
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingIndexes(indexes));
+ CPPUNIT_ASSERT_EQUAL((size_t)1, indexes.size());
+ CPPUNIT_ASSERT_EQUAL((size_t)63, indexes.front());
+ }
}
void BitfieldManTest::testGetAllMissingIndexes()
@@ -610,16 +620,53 @@ void BitfieldManTest::testGetAllMissingIndexes()
BitfieldMan peerBf(blockLength, totalLength);
peerBf.setAllBit();
- CPPUNIT_ASSERT_EQUAL((size_t)64, bf.getAllMissingIndexes(peerBf.getBitfield(),
- peerBf.getBitfieldLength()).size());
+ {
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingIndexes(indexes,
+ peerBf.getBitfield(),
+ peerBf.getBitfieldLength()));
+ CPPUNIT_ASSERT_EQUAL((size_t)64, indexes.size());
+ }
for(size_t i = 0; i < 62; ++i) {
bf.setBit(i);
}
peerBf.unsetBit(62);
+ {
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingIndexes(indexes,
+ peerBf.getBitfield(),
+ peerBf.getBitfieldLength()));
+
+ CPPUNIT_ASSERT_EQUAL((size_t)1, indexes.size());
+ CPPUNIT_ASSERT_EQUAL((size_t)63, indexes.front());
+ }
+}
+
+void BitfieldManTest::testGetAllMissingUnusedIndexes()
+{
+ size_t blockLength = 16*1024;
+ uint64_t totalLength = 1024*1024;
+ BitfieldMan bf(blockLength, totalLength);
+ BitfieldMan peerBf(blockLength, totalLength);
+ peerBf.setAllBit();
{
- std::deque<size_t> indexes = bf.getAllMissingIndexes(peerBf.getBitfield(),
- peerBf.getBitfieldLength());
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingUnusedIndexes(indexes,
+ peerBf.getBitfield(),
+ peerBf.getBitfieldLength()));
+ CPPUNIT_ASSERT_EQUAL((size_t)64, indexes.size());
+ }
+ for(size_t i = 0; i < 61; ++i) {
+ bf.setBit(i);
+ }
+ bf.setUseBit(61);
+ peerBf.unsetBit(62);
+ {
+ std::deque<size_t> indexes;
+ CPPUNIT_ASSERT(bf.getAllMissingUnusedIndexes(indexes,
+ peerBf.getBitfield(),
+ peerBf.getBitfieldLength()));
CPPUNIT_ASSERT_EQUAL((size_t)1, indexes.size());
CPPUNIT_ASSERT_EQUAL((size_t)63, indexes.front());