MetalinkPostDownloadHandlerTest.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "MetalinkPostDownloadHandler.h"
  2. #include "RequestGroup.h"
  3. #include "Option.h"
  4. #include "SingleFileDownloadContext.h"
  5. #include "FileEntry.h"
  6. #include <cppunit/extensions/HelperMacros.h>
  7. namespace aria2 {
  8. class MetalinkPostDownloadHandlerTest:public CppUnit::TestFixture {
  9. CPPUNIT_TEST_SUITE(MetalinkPostDownloadHandlerTest);
  10. CPPUNIT_TEST(testCanHandle_extension);
  11. CPPUNIT_TEST(testCanHandle_contentType);
  12. CPPUNIT_TEST(testGetNextRequestGroups);
  13. CPPUNIT_TEST_SUITE_END();
  14. private:
  15. public:
  16. void setUp() {}
  17. void testCanHandle_extension();
  18. void testCanHandle_contentType();
  19. void testGetNextRequestGroups();
  20. };
  21. CPPUNIT_TEST_SUITE_REGISTRATION( MetalinkPostDownloadHandlerTest );
  22. void MetalinkPostDownloadHandlerTest::testCanHandle_extension()
  23. {
  24. Option op;
  25. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test.metalink");
  26. RequestGroup rg(&op, std::deque<std::string>());
  27. rg.setDownloadContext(dctx);
  28. MetalinkPostDownloadHandler handler;
  29. CPPUNIT_ASSERT(handler.canHandle(&rg));
  30. dctx->setFilename("test.metalink2");
  31. CPPUNIT_ASSERT(!handler.canHandle(&rg));
  32. }
  33. void MetalinkPostDownloadHandlerTest::testCanHandle_contentType()
  34. {
  35. Option op;
  36. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test");
  37. dctx->setContentType("application/metalink+xml");
  38. RequestGroup rg(&op, std::deque<std::string>());
  39. rg.setDownloadContext(dctx);
  40. MetalinkPostDownloadHandler handler;
  41. CPPUNIT_ASSERT(handler.canHandle(&rg));
  42. dctx->setContentType("application/octet-stream");
  43. CPPUNIT_ASSERT(!handler.canHandle(&rg));
  44. }
  45. void MetalinkPostDownloadHandlerTest::testGetNextRequestGroups()
  46. {
  47. Option op;
  48. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test.xml");
  49. RequestGroup rg(&op, std::deque<std::string>());
  50. rg.setDownloadContext(dctx);
  51. rg.initPieceStorage();
  52. MetalinkPostDownloadHandler handler;
  53. RequestGroups groups = handler.getNextRequestGroups(&rg);
  54. #ifdef ENABLE_BITTORRENT
  55. CPPUNIT_ASSERT_EQUAL((size_t)6/* 5 + 1 torrent file download */, groups.size());
  56. #else
  57. CPPUNIT_ASSERT_EQUAL((size_t)5, groups.size());
  58. #endif // ENABLE_BITTORRENT
  59. }
  60. } // namespace aria2