diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-11-28 09:58:49 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-11-28 09:58:49 +0000 |
| commit | 339795311bd3d07da1d49fb2c5c2e7efa8833922 (patch) | |
| tree | 21c4960e2cb6a04933f70d784351d15c64223605 /test | |
| parent | 96205abc67e5f425e3bad997959493ba54d83190 (diff) | |
2009-11-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Accept BitTorrent Magnet URI in Metalink resource type bittorrent.
Rewritten UTMetadataPostDownloadHandler. To create torrent data
from metadata, use new metadata2Torrent() function.
* src/BtDependency.cc
* src/UTMetadataPostDownloadHandler.cc
* src/bittorrent_helper.cc
* src/bittorrent_helper.h
* test/BittorrentHelperTest.cc
* test/BtDependencyTest.cc
Diffstat (limited to 'test')
| -rw-r--r-- | test/BittorrentHelperTest.cc | 21 | ||||
| -rw-r--r-- | test/BtDependencyTest.cc | 33 |
2 files changed, 54 insertions, 0 deletions
diff --git a/test/BittorrentHelperTest.cc b/test/BittorrentHelperTest.cc index 684e802a..587b09e2 100644 --- a/test/BittorrentHelperTest.cc +++ b/test/BittorrentHelperTest.cc @@ -61,6 +61,7 @@ class BittorrentHelperTest:public CppUnit::TestFixture { CPPUNIT_TEST(testMetadata); CPPUNIT_TEST(testParseMagnet); CPPUNIT_TEST(testParseMagnet_base32); + CPPUNIT_TEST(testMetadata2Torrent); CPPUNIT_TEST_SUITE_END(); public: void setUp() { @@ -102,6 +103,7 @@ public: void testMetadata(); void testParseMagnet(); void testParseMagnet_base32(); + void testMetadata2Torrent(); }; @@ -734,6 +736,25 @@ void BittorrentHelperTest::testParseMagnet_base32() util::toHex(attrs[bittorrent::INFO_HASH].s())); } +void BittorrentHelperTest::testMetadata2Torrent() +{ + std::string metadata = "METADATA"; + BDE attrs = BDE::dict(); + BDE announceList = BDE::list(); + attrs[ANNOUNCE_LIST] = announceList; + CPPUNIT_ASSERT_EQUAL + (std::string("d4:infoMETADATAe"), metadata2Torrent(metadata, attrs)); + announceList << BDE::list(); + announceList[0] << std::string("http://localhost/announce"); + CPPUNIT_ASSERT_EQUAL + (std::string("d" + "13:announce-list" + "ll25:http://localhost/announceee" + "4:infoMETADATA" + "e"), + metadata2Torrent(metadata, attrs)); +} + } // namespace bittorrent } // namespace aria2 diff --git a/test/BtDependencyTest.cc b/test/BtDependencyTest.cc index c372321d..d1dc1f77 100644 --- a/test/BtDependencyTest.cc +++ b/test/BtDependencyTest.cc @@ -13,6 +13,9 @@ #include "FileEntry.h" #include "PieceSelector.h" #include "bittorrent_helper.h" +#include "DirectDiskAdaptor.h" +#include "ByteArrayDiskWriter.h" +#include "MockPieceStorage.h" namespace aria2 { @@ -20,6 +23,7 @@ class BtDependencyTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(BtDependencyTest); CPPUNIT_TEST(testResolve); + CPPUNIT_TEST(testResolve_metadata); CPPUNIT_TEST(testResolve_loadError); CPPUNIT_TEST(testResolve_dependeeFailure); CPPUNIT_TEST(testResolve_dependeeInProgress); @@ -64,6 +68,7 @@ public: } void testResolve(); + void testResolve_metadata(); void testResolve_loadError(); void testResolve_dependeeFailure(); void testResolve_dependeeInProgress(); @@ -93,6 +98,34 @@ void BtDependencyTest::testResolve() CPPUNIT_ASSERT_EQUAL((size_t)1, firstFileEntry->getRemainingUris().size()); } +void BtDependencyTest::testResolve_metadata() +{ + SharedHandle<RequestGroup> dependant = createDependant(_option); + SharedHandle<RequestGroup> dependee = + createDependee(_option, "metadata", 0); + + SharedHandle<DirectDiskAdaptor> diskAdaptor(new DirectDiskAdaptor()); + SharedHandle<ByteArrayDiskWriter> diskWriter(new ByteArrayDiskWriter()); + diskAdaptor->setDiskWriter(diskWriter); + diskWriter->setString + ("d4:name19:aria2-0.8.2.tar.bz26:lengthi384e12:piece lengthi128e" + "6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCC" + "e"); + SharedHandle<MockPieceStorage> pieceStorage(new MockPieceStorage()); + pieceStorage->setDiskAdaptor(diskAdaptor); + pieceStorage->setDownloadFinished(true); + dependee->setPieceStorage(pieceStorage); + BDE attrs = BDE::dict(); + dependee->getDownloadContext()->setAttribute(bittorrent::BITTORRENT, attrs); + + BtDependency dep(dependant, dependee); + CPPUNIT_ASSERT(dep.resolve()); + + CPPUNIT_ASSERT_EQUAL + (std::string("cd41c7fdddfd034a15a04d7ff881216e01c4ceaf"), + bittorrent::getInfoHashString(dependant->getDownloadContext())); +} + void BtDependencyTest::testResolve_loadError() { SharedHandle<RequestGroup> dependant = createDependant(_option); |
