diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-12-24 06:25:21 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-12-24 06:25:21 +0000 |
| commit | 9c3e8fbd9c92cc858c2b0f805714e19ce97b7983 (patch) | |
| tree | 2f53afd601fbe1fff339f17cef5ef37186a1960a /test/DefaultPieceStorageTest.cc | |
| parent | 458cc274628f226b3130240d15a1ae8e562d31b2 (diff) | |
2006-12-24 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten a portion of bittorrent implementation:
* src/BtMessageValidator.h: New class.
* src/BtBitfieldMessageValidator.h: New class.
* src/BtHandshakeMessageValidator.h: New class.
* src/BtRequestMessageValidator.h: New class.
* src/BtSuggestPieceMessageValidator.h: New class.
* src/BtAllowedFastMessageValidator.h: New class.
* src/BtRejectMessageValidator.h: New class.
* src/BtCancelMessageValidator.h: New class.
* src/BtPieceMessageValidator.h: New class.
* src/BtHaveMessageValidator.h: New class.
* src/BtEventListener.h: New class.
* src/AbstractBtEventListener.h: New class.
* src/BtEvent.h: New class.
* src/BtChokingEvent.h: New class.
* src/BtChokedEvent.h: New class.
* src/BtCancelSendingPieceEvent.h: New class.
* src/BtAbortOutstandingRequestEvent.h: New class.
* src/Randomizer.h: New class.
* src/SimpleRandomizer.h: New class.
* src/BtMessage.h: New class.
* src/AbstractBtMessage.h: New class.
* src/SimpleBtMessage.h: New class.
* src/BtHaveMessage.h: New class.
* src/BtInterestedMessage.h: New class.
* src/BtAllowedFastMessage.h: New class.
* src/BtUnchokeMessage.h: New class.
* src/BtCancelMessage.h: New class.
* src/BtNotInterestedMessage.h: New class.
* src/BtChokeMessage.h: New class.
* src/BtHaveNoneMessage.h: New class.
* src/BtHandshakeMessage.h: New class.
* src/BtSuggestPieceMessage.h: New class.
* src/BtHaveMessage.h: New class.
* src/BtPieceMessage.h: New class.
* src/BtHaveAllMessage.h: New class.
* src/BtKeepAliveMessage.h: New class.
* src/BtPortMessage.h: New class.
* src/BtRejectMessage.h: New class.
* src/BtBitfieldMessage.h: New class.
* src/BtRequestMessage.h: New class.
* src/DefaultBtRequestFactory.h: New class.
* src/DefaultBtMessageReceiver.h: New class.
* src/BtInteractive.h: New class.
* src/BtMessageDispatcher.h: New class.
* src/DefaultBtMessageDispatcher.h: New class.
* src/DefaultBtInteractive.h: New class.
* src/BitfieldManFactory.h: New class.
* src/HandleRegistry.h: New class.
* src/BtMessageFactory.h: New class.
* src/BtMessageReceiver.h: New class.
* src/DefaultBtMessageFactory.h: New class.
* src/PeerObject.h: New class.
* src/BtRequestFactory.h: New class.
Diffstat (limited to 'test/DefaultPieceStorageTest.cc')
| -rw-r--r-- | test/DefaultPieceStorageTest.cc | 62 |
1 files changed, 52 insertions, 10 deletions
diff --git a/test/DefaultPieceStorageTest.cc b/test/DefaultPieceStorageTest.cc index d26926b0..067309da 100644 --- a/test/DefaultPieceStorageTest.cc +++ b/test/DefaultPieceStorageTest.cc @@ -2,6 +2,8 @@ #include "DefaultBtContext.h" #include "Util.h" #include "Exception.h" +#include "FixedNumberRandomizer.h" +#include "BitfieldManFactory.h" #include <cppunit/extensions/HelperMacros.h> using namespace std; @@ -14,13 +16,20 @@ class DefaultPieceStorageTest:public CppUnit::TestFixture { CPPUNIT_TEST(testGetMissingFastPiece); CPPUNIT_TEST(testHasMissingPiece); CPPUNIT_TEST(testCompletePiece); + CPPUNIT_TEST(testGetPiece); + CPPUNIT_TEST(testGetPieceInUsedPieces); + CPPUNIT_TEST(testGetPieceCompletedPiece); CPPUNIT_TEST_SUITE_END(); private: BtContextHandle btContext; PeerHandle peer; Option* option; public: - DefaultPieceStorageTest():btContext(0) {} + DefaultPieceStorageTest():btContext(0), peer(0) { + FixedNumberRandomizer* randomizer = new FixedNumberRandomizer(); + randomizer->setFixedNumber(0); + BitfieldManFactory::setDefaultRandomizer(randomizer); + } void setUp() { btContext = BtContextHandle(new DefaultBtContext()); @@ -36,6 +45,9 @@ public: void testGetMissingFastPiece(); void testHasMissingPiece(); void testCompletePiece(); + void testGetPiece(); + void testGetPieceInUsedPieces(); + void testGetPieceCompletedPiece(); }; @@ -53,17 +65,17 @@ void DefaultPieceStorageTest::testGetMissingPiece() { pss.setEndGamePieceNum(0); peer->setAllBitfield(); - Piece piece = pss.getMissingPiece(peer); + PieceHandle piece = pss.getMissingPiece(peer); CPPUNIT_ASSERT_EQUAL(string("piece: index=0, length=128"), - piece.toString()); + piece->toString()); piece = pss.getMissingPiece(peer); CPPUNIT_ASSERT_EQUAL(string("piece: index=1, length=128"), - piece.toString()); + piece->toString()); piece = pss.getMissingPiece(peer); CPPUNIT_ASSERT_EQUAL(string("piece: index=2, length=128"), - piece.toString()); + piece->toString()); piece = pss.getMissingPiece(peer); - CPPUNIT_ASSERT(Piece::isNull(piece)); + CPPUNIT_ASSERT(piece.isNull()); } void DefaultPieceStorageTest::testGetMissingFastPiece() { @@ -74,9 +86,9 @@ void DefaultPieceStorageTest::testGetMissingFastPiece() { peer->setFastExtensionEnabled(true); peer->addFastSetIndex(2); - Piece piece = pss.getMissingFastPiece(peer); + PieceHandle piece = pss.getMissingFastPiece(peer); CPPUNIT_ASSERT_EQUAL(string("piece: index=2, length=128"), - piece.toString()); + piece->toString()); } void DefaultPieceStorageTest::testHasMissingPiece() { @@ -95,9 +107,9 @@ void DefaultPieceStorageTest::testCompletePiece() { peer->setAllBitfield(); - Piece piece = pss.getMissingPiece(peer); + PieceHandle piece = pss.getMissingPiece(peer); CPPUNIT_ASSERT_EQUAL(string("piece: index=0, length=128"), - piece.toString()); + piece->toString()); CPPUNIT_ASSERT_EQUAL((long long int)0, pss.getCompletedLength()); @@ -108,3 +120,33 @@ void DefaultPieceStorageTest::testCompletePiece() { pss.getCompletedLength()); } + +void DefaultPieceStorageTest::testGetPiece() { + DefaultPieceStorage pss(btContext, option); + + PieceHandle pieceGot = pss.getPiece(0); + CPPUNIT_ASSERT_EQUAL(0, pieceGot->getIndex()); + CPPUNIT_ASSERT_EQUAL(128, pieceGot->getLength()); + CPPUNIT_ASSERT_EQUAL(false, pieceGot->pieceComplete()); +} + +void DefaultPieceStorageTest::testGetPieceInUsedPieces() { + DefaultPieceStorage pss(btContext, option); + PieceHandle piece = PieceHandle(new Piece(0, 128)); + piece->completeBlock(0); + pss.addUsedPiece(piece); + PieceHandle pieceGot = pss.getPiece(0); + CPPUNIT_ASSERT_EQUAL(0, pieceGot->getIndex()); + CPPUNIT_ASSERT_EQUAL(128, pieceGot->getLength()); + CPPUNIT_ASSERT_EQUAL(1, pieceGot->countCompleteBlock()); +} + +void DefaultPieceStorageTest::testGetPieceCompletedPiece() { + DefaultPieceStorage pss(btContext, option); + PieceHandle piece = PieceHandle(new Piece(0, 128)); + pss.completePiece(piece); + PieceHandle pieceGot = pss.getPiece(0); + CPPUNIT_ASSERT_EQUAL(0, pieceGot->getIndex()); + CPPUNIT_ASSERT_EQUAL(128, pieceGot->getLength()); + CPPUNIT_ASSERT_EQUAL(true, pieceGot->pieceComplete()); +} |
