diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-04-08 12:54:14 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-04-08 12:54:14 +0000 |
| commit | 5cd0108f93d9b91e30b74ec92e66571493a2b997 (patch) | |
| tree | b95334e12a5b1c09fc5fe3731c26beb7031cc84c /test/SessionSerializerTest.cc | |
| parent | dd7590f927f73a887f579aba6f309e1539943e6d (diff) | |
2010-04-08 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --save-session=FILE option. This option saves
error/unfinished downloads to FILE on exit. You can pass this
output file to aria2c with -i option on restart. Please note that
downloads added by aria2.addTorrent and aria2.addMetalink XML-RPC
method are not saved.
* src/BtPostDownloadHandler.cc
* src/DownloadResult.h
* src/Makefile.am
* src/MetadataInfo.cc
* src/MetadataInfo.h
* src/Metalink2RequestGroup.cc
* src/MetalinkPostDownloadHandler.cc
* src/MultiUrlRequestInfo.cc
* src/OptionHandlerFactory.cc
* src/RequestGroup.cc
* src/RequestGroup.h
* src/SessionSerializer.cc
* src/SessionSerializer.h
* src/UTMetadataPostDownloadHandler.cc
* src/download_helper.cc
* src/download_helper.h
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/Makefile.am
* test/SessionSerializerTest.cc
* test/XmlRpcMethodTest.cc
* test/serialize_session.meta4
Diffstat (limited to 'test/SessionSerializerTest.cc')
| -rw-r--r-- | test/SessionSerializerTest.cc | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/test/SessionSerializerTest.cc b/test/SessionSerializerTest.cc new file mode 100644 index 00000000..10b96618 --- /dev/null +++ b/test/SessionSerializerTest.cc @@ -0,0 +1,71 @@ +#include "SessionSerializer.h" + +#include <iostream> +#include <sstream> + +#include <cppunit/extensions/HelperMacros.h> + +#include "RequestGroupMan.h" +#include "ServerStatMan.h" +#include "array_fun.h" +#include "download_helper.h" +#include "FileEntry.h" +#include "prefs.h" + +namespace aria2 { + +class SessionSerializerTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(SessionSerializerTest); + CPPUNIT_TEST(testSave); + CPPUNIT_TEST_SUITE_END(); +public: + void testSave(); +}; + + +CPPUNIT_TEST_SUITE_REGISTRATION(SessionSerializerTest); + +void SessionSerializerTest::testSave() +{ +#if defined(ENABLE_BITTORRENT) && defined(ENABLE_METALINK) + const std::string URIs[] = + { "http://localhost/file", + "http://mirror/file", + "test.torrent", + "serialize_session.meta4", + "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C"}; + std::vector<std::string> uris(vbegin(URIs), vend(URIs)); + std::vector<SharedHandle<RequestGroup> > result; + SharedHandle<Option> option(new Option()); + option->put(PREF_DIR, "/tmp"); + createRequestGroupForUri(result, option, uris); + CPPUNIT_ASSERT_EQUAL((size_t)5, result.size()); + SharedHandle<RequestGroupMan> rgman + (new RequestGroupMan(result, 1, option.get())); + SessionSerializer s(rgman); + std::stringstream ss; + s.save(ss); + std::string line; + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(strconcat(uris[0], "\t", uris[1], "\t"), line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(uris[2], line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(uris[3], line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(uris[4], line); + std::getline(ss, line); + CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line); + std::getline(ss, line); + CPPUNIT_ASSERT(!ss); +#endif // defined(ENABLE_BITTORRENT) && defined(ENABLE_METALINK) +} + +} // namespace aria2 |
