summaryrefslogtreecommitdiff
path: root/test/Metalink2RequestGroupTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-27 15:04:48 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-27 15:04:48 +0000
commit0c62e907309da29d23b669da91034d00f378bade (patch)
tree42b0acc586e64aa4028d6279ebd9783d8713ad9d /test/Metalink2RequestGroupTest.cc
parent4bef54c8e926f8f9269dd9001f27202665ea1fab (diff)
2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed the bug that grouped FileEntry objects are not used but instead all FileEntry objects are used for each metaurl group. * src/Metalink2RequestGroup.cc * test/Metalink2RequestGroupTest.cc * test/metalink4-groupbymetaurl.xml
Diffstat (limited to 'test/Metalink2RequestGroupTest.cc')
-rw-r--r--test/Metalink2RequestGroupTest.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/test/Metalink2RequestGroupTest.cc b/test/Metalink2RequestGroupTest.cc
index defb99f8..24e317e2 100644
--- a/test/Metalink2RequestGroupTest.cc
+++ b/test/Metalink2RequestGroupTest.cc
@@ -16,6 +16,7 @@ class Metalink2RequestGroupTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(Metalink2RequestGroupTest);
CPPUNIT_TEST(testGenerate);
+ CPPUNIT_TEST(testGenerate_groupByMetaurl);
CPPUNIT_TEST_SUITE_END();
private:
SharedHandle<Option> _option;
@@ -28,6 +29,7 @@ public:
}
void testGenerate();
+ void testGenerate_groupByMetaurl();
};
@@ -121,4 +123,50 @@ void Metalink2RequestGroupTest::testGenerate()
}
}
+void Metalink2RequestGroupTest::testGenerate_groupByMetaurl()
+{
+ std::deque<SharedHandle<RequestGroup> > groups;
+ Metalink2RequestGroup().generate(groups, "metalink4-groupbymetaurl.xml",
+ _option);
+ CPPUNIT_ASSERT_EQUAL((size_t)3, groups.size());
+ // first RequestGroup is torrent for second RequestGroup
+ {
+ SharedHandle<RequestGroup> rg = groups[0];
+ std::deque<std::string> uris;
+ rg->getDownloadContext()->getFirstFileEntry()->getUris(uris);
+ CPPUNIT_ASSERT_EQUAL((size_t)1, uris.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("http://torrent"), uris[0]);
+ }
+ // second
+ {
+ SharedHandle<RequestGroup> rg = groups[1];
+ SharedHandle<DownloadContext> dctx = rg->getDownloadContext();
+ const std::vector<SharedHandle<FileEntry> >& fileEntries =
+ dctx->getFileEntries();
+ CPPUNIT_ASSERT_EQUAL((size_t)2, fileEntries.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("./file1"), fileEntries[0]->getPath());
+ CPPUNIT_ASSERT_EQUAL(std::string("file1"), fileEntries[0]->getOriginalName());
+ CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntries[0]->getRemainingUris().size());
+ CPPUNIT_ASSERT_EQUAL(std::string("http://file1p1"),
+ fileEntries[0]->getRemainingUris()[0]);
+ CPPUNIT_ASSERT_EQUAL(std::string("./file3"), fileEntries[1]->getPath());
+ CPPUNIT_ASSERT_EQUAL(std::string("file3"), fileEntries[1]->getOriginalName());
+ CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntries[1]->getRemainingUris().size());
+ CPPUNIT_ASSERT_EQUAL(std::string("http://file3p1"),
+ fileEntries[1]->getRemainingUris()[0]);
+ }
+ // third
+ {
+ SharedHandle<RequestGroup> rg = groups[2];
+ SharedHandle<DownloadContext> dctx = rg->getDownloadContext();
+ const std::vector<SharedHandle<FileEntry> >& fileEntries =
+ dctx->getFileEntries();
+ CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntries.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("./file2"), fileEntries[0]->getPath());
+ CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntries[0]->getRemainingUris().size());
+ CPPUNIT_ASSERT_EQUAL(std::string("http://file2p1"),
+ fileEntries[0]->getRemainingUris()[0]);
+ }
+}
+
} // namespace aria2