summaryrefslogtreecommitdiff
path: root/test/IteratableChunkChecksumValidatorTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-10-11 16:58:24 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-10-11 16:58:24 +0000
commit048a2cf59737f761876e81a77e8d064c45c752d7 (patch)
tree65c9d5498aafe6a8c8e640ddfcc43c7013504d0d /test/IteratableChunkChecksumValidatorTest.cc
parente26bbbb9eee140ba24402fe872a752b42f0077de (diff)
2007-10-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Implemented BitTorrent/http/ftp integrated download. I've rewritten lots of files and now some headers have forward class declarations to reduce compile time. The implementation is extremely alpha stage, I recommend to use this for testing purpose only.
Diffstat (limited to 'test/IteratableChunkChecksumValidatorTest.cc')
-rw-r--r--test/IteratableChunkChecksumValidatorTest.cc143
1 files changed, 27 insertions, 116 deletions
diff --git a/test/IteratableChunkChecksumValidatorTest.cc b/test/IteratableChunkChecksumValidatorTest.cc
index 65dbbe18..5e54795f 100644
--- a/test/IteratableChunkChecksumValidatorTest.cc
+++ b/test/IteratableChunkChecksumValidatorTest.cc
@@ -1,5 +1,8 @@
#include "IteratableChunkChecksumValidator.h"
-#include "DefaultDiskWriter.h"
+#include "SingleFileDownloadContext.h"
+#include "DefaultPieceStorage.h"
+#include "Option.h"
+#include "DiskAdaptor.h"
#include <cppunit/extensions/HelperMacros.h>
using namespace std;
@@ -8,27 +11,15 @@ class IteratableChunkChecksumValidatorTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(IteratableChunkChecksumValidatorTest);
CPPUNIT_TEST(testValidate);
- /*
- CPPUNIT_TEST(testValidate2);
- CPPUNIT_TEST(testValidate3);
- CPPUNIT_TEST(testValidate4);
- */
CPPUNIT_TEST_SUITE_END();
private:
- static const char* csArray[];// = { "29b0e7878271645fffb7eec7db4a7473a1c00bc1",
- // "4df75a661cb7eb2733d9cdaa7f772eae3a4e2976",
- // "0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
+ static const char* csArray[];
public:
void setUp() {
}
void testValidate();
- /*
- void testValidate2();
- void testValidate3();
- void testValidate4();
- */
};
@@ -39,118 +30,38 @@ const char* IteratableChunkChecksumValidatorTest::csArray[] = { "29b0e7878271645
"0a4ea2f7dd7c52ddf2099a444ab2184b4d341bdb" };
void IteratableChunkChecksumValidatorTest::testValidate() {
- BitfieldMan bitfieldMan(100, 250);
- bitfieldMan.setAllBit();
- Strings checksums(&csArray[0], &csArray[3]);
-
- DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
- diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
-
- ChunkChecksumHandle chunkChecksum = new ChunkChecksum("sha1",
- checksums,
- 100);
- IteratableChunkChecksumValidator validator;
- validator.setDiskWriter(diskWriter);
- validator.setBitfield(&bitfieldMan);
- validator.setChunkChecksum(chunkChecksum);
-
- validator.init();
+ Option option;
+ SingleFileDownloadContextHandle dctx =
+ new SingleFileDownloadContext(100, 250, "chunkChecksumTestFile250.txt");
+ dctx->setPieceHashes(Strings(&csArray[0], &csArray[3]));
+ dctx->setPieceHashAlgo("sha1");
+ DefaultPieceStorageHandle ps = new DefaultPieceStorage(dctx, &option);
+ ps->initStorage();
+ ps->getDiskAdaptor()->openFile();
+
+ IteratableChunkChecksumValidator validator(dctx, ps);
+
validator.validateChunk();
CPPUNIT_ASSERT(!validator.finished());
validator.validateChunk();
CPPUNIT_ASSERT(!validator.finished());
validator.validateChunk();
CPPUNIT_ASSERT(validator.finished());
- CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
+ validator.updatePieceStorage();
+ CPPUNIT_ASSERT(ps->downloadFinished());
- checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
- chunkChecksum = new ChunkChecksum("sha1",
- checksums,
- 100);
- validator.setChunkChecksum(chunkChecksum);
+ // make the test fail
+ Strings badHashes(&csArray[0], &csArray[3]);
+ badHashes[1] = "ffffffffffffffffffffffffffffffffffffffff";
+ dctx->setPieceHashes(badHashes);
validator.init();
+
while(!validator.finished()) {
validator.validateChunk();
}
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(2));
-}
-/*
-void IteratableChunkChecksumValidatorTest::testValidate2() {
- BitfieldMan bitfieldMan(50, 250);
- bitfieldMan.setAllBit();
- Strings checksums(&csArray[0], &csArray[3]);
-
- DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
- diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
-
- IteratableChunkChecksumValidator validator;
- validator.setDiskWriter(diskWriter);
-
- validator.validate(&bitfieldMan, checksums, 100);
-
- CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
-
- checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
- validator.validate(&bitfieldMan, checksums, 100);
-
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(1));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(4));
-}
-
-void IteratableChunkChecksumValidatorTest::testValidate3() {
- BitfieldMan bitfieldMan(50, 250);
- bitfieldMan.setAllBit();
- Strings checksums;
- checksums.push_back("898a81b8e0181280ae2ee1b81e269196d91e869a");
-
- DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
- diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
-
- IteratableChunkChecksumValidator validator;
- validator.setDiskWriter(diskWriter);
-
- validator.validate(&bitfieldMan, checksums, 250);
-
- CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
-
- checksums[0] = "ffffffffffffffffffffffffffffffffffffffff";
-
- validator.validate(&bitfieldMan, checksums, 250);
-
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(0));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(3));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(4));
-}
-
-void IteratableChunkChecksumValidatorTest::testValidate4() {
- BitfieldMan bitfieldMan(70, 250);
- bitfieldMan.setAllBit();
- Strings checksums(&csArray[0], &csArray[3]);
-
- DefaultDiskWriterHandle diskWriter = new DefaultDiskWriter();
- diskWriter->openExistingFile("chunkChecksumTestFile250.txt");
-
- IteratableChunkChecksumValidator validator;
- validator.setDiskWriter(diskWriter);
-
- validator.validate(&bitfieldMan, checksums, 100);
-
- CPPUNIT_ASSERT(bitfieldMan.isAllBitSet());
-
- checksums[1] = "ffffffffffffffffffffffffffffffffffffffff";
- validator.validate(&bitfieldMan, checksums, 100);
-
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(0));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(1));
- CPPUNIT_ASSERT(!bitfieldMan.isBitSet(2));
- CPPUNIT_ASSERT(bitfieldMan.isBitSet(3));
+ validator.updatePieceStorage();
+ CPPUNIT_ASSERT(ps->hasPiece(0));
+ CPPUNIT_ASSERT(!ps->hasPiece(1));
+ CPPUNIT_ASSERT(ps->hasPiece(2));
}
-*/