summaryrefslogtreecommitdiff
path: root/test/DefaultPieceStorageTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-12-24 06:25:21 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-12-24 06:25:21 +0000
commit9c3e8fbd9c92cc858c2b0f805714e19ce97b7983 (patch)
tree2f53afd601fbe1fff339f17cef5ef37186a1960a /test/DefaultPieceStorageTest.cc
parent458cc274628f226b3130240d15a1ae8e562d31b2 (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.cc62
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());
+}