summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-28 09:58:49 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2009-11-28 09:58:49 +0000
commit339795311bd3d07da1d49fb2c5c2e7efa8833922 (patch)
tree21c4960e2cb6a04933f70d784351d15c64223605 /test
parent96205abc67e5f425e3bad997959493ba54d83190 (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.cc21
-rw-r--r--test/BtDependencyTest.cc33
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);