diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-10-11 16:58:24 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-10-11 16:58:24 +0000 |
| commit | 048a2cf59737f761876e81a77e8d064c45c752d7 (patch) | |
| tree | 65c9d5498aafe6a8c8e640ddfcc43c7013504d0d /test/IteratableChunkChecksumValidatorTest.cc | |
| parent | e26bbbb9eee140ba24402fe872a752b42f0077de (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.cc | 143 |
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)); } -*/ |
