SessionSerializerTest.cc 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "SessionSerializer.h"
  2. #include <iostream>
  3. #include <sstream>
  4. #include <cppunit/extensions/HelperMacros.h>
  5. #include "RequestGroupMan.h"
  6. #include "array_fun.h"
  7. #include "download_helper.h"
  8. #include "prefs.h"
  9. #include "Option.h"
  10. #include "a2functional.h"
  11. namespace aria2 {
  12. class SessionSerializerTest:public CppUnit::TestFixture {
  13. CPPUNIT_TEST_SUITE(SessionSerializerTest);
  14. CPPUNIT_TEST(testSave);
  15. CPPUNIT_TEST_SUITE_END();
  16. public:
  17. void testSave();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(SessionSerializerTest);
  20. void SessionSerializerTest::testSave()
  21. {
  22. #if defined(ENABLE_BITTORRENT) && defined(ENABLE_METALINK)
  23. const std::string URIs[] =
  24. { "http://localhost/file",
  25. "http://mirror/file",
  26. "test.torrent",
  27. "serialize_session.meta4",
  28. "magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C"};
  29. std::vector<std::string> uris(vbegin(URIs), vend(URIs));
  30. std::vector<SharedHandle<RequestGroup> > result;
  31. SharedHandle<Option> option(new Option());
  32. option->put(PREF_DIR, "/tmp");
  33. createRequestGroupForUri(result, option, uris);
  34. CPPUNIT_ASSERT_EQUAL((size_t)5, result.size());
  35. SharedHandle<RequestGroupMan> rgman
  36. (new RequestGroupMan(result, 1, option.get()));
  37. SessionSerializer s(rgman);
  38. std::stringstream ss;
  39. s.save(ss);
  40. std::string line;
  41. std::getline(ss, line);
  42. CPPUNIT_ASSERT_EQUAL(strconcat(uris[0], "\t", uris[1], "\t"), line);
  43. std::getline(ss, line);
  44. CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line);
  45. std::getline(ss, line);
  46. CPPUNIT_ASSERT_EQUAL(uris[2], line);
  47. std::getline(ss, line);
  48. CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line);
  49. std::getline(ss, line);
  50. CPPUNIT_ASSERT_EQUAL(uris[3], line);
  51. std::getline(ss, line);
  52. CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line);
  53. std::getline(ss, line);
  54. CPPUNIT_ASSERT_EQUAL(uris[4], line);
  55. std::getline(ss, line);
  56. CPPUNIT_ASSERT_EQUAL(std::string(" dir=/tmp"), line);
  57. std::getline(ss, line);
  58. CPPUNIT_ASSERT(!ss);
  59. #endif // defined(ENABLE_BITTORRENT) && defined(ENABLE_METALINK)
  60. }
  61. } // namespace aria2