diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 15:04:48 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-02-27 15:04:48 +0000 |
| commit | 0c62e907309da29d23b669da91034d00f378bade (patch) | |
| tree | 42b0acc586e64aa4028d6279ebd9783d8713ad9d /test/Metalink2RequestGroupTest.cc | |
| parent | 4bef54c8e926f8f9269dd9001f27202665ea1fab (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.cc | 48 |
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 |
