DownloadHandlerFactoryTest.cc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "DownloadHandlerFactory.h"
  2. #include "RequestGroup.h"
  3. #include "Option.h"
  4. #include "SingleFileDownloadContext.h"
  5. #include "MemoryBufferPreDownloadHandler.h"
  6. #include "FileEntry.h"
  7. #include <cppunit/extensions/HelperMacros.h>
  8. namespace aria2 {
  9. class DownloadHandlerFactoryTest:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(DownloadHandlerFactoryTest);
  11. CPPUNIT_TEST(testGetMetalinkPreDownloadHandler_extension);
  12. CPPUNIT_TEST(testGetMetalinkPreDownloadHandler_contentType);
  13. CPPUNIT_TEST(testGetBtPreDownloadHandler_extension);
  14. CPPUNIT_TEST(testGetBtPreDownloadHandler_contentType);
  15. CPPUNIT_TEST_SUITE_END();
  16. private:
  17. public:
  18. void setUp() {}
  19. void testGetMetalinkPreDownloadHandler_extension();
  20. void testGetMetalinkPreDownloadHandler_contentType();
  21. void testGetBtPreDownloadHandler_extension();
  22. void testGetBtPreDownloadHandler_contentType();
  23. };
  24. CPPUNIT_TEST_SUITE_REGISTRATION( DownloadHandlerFactoryTest );
  25. void DownloadHandlerFactoryTest::testGetMetalinkPreDownloadHandler_extension()
  26. {
  27. Option op;
  28. SharedHandle<SingleFileDownloadContext> dctx
  29. (new SingleFileDownloadContext(0, 0, "test.metalink"));
  30. RequestGroup rg(&op, std::deque<std::string>());
  31. rg.setDownloadContext(dctx);
  32. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getMetalinkPreDownloadHandler();
  33. CPPUNIT_ASSERT(handler->canHandle(&rg));
  34. dctx->setFilename("test.metalink2");
  35. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  36. }
  37. void DownloadHandlerFactoryTest::testGetMetalinkPreDownloadHandler_contentType()
  38. {
  39. Option op;
  40. SharedHandle<SingleFileDownloadContext> dctx
  41. (new SingleFileDownloadContext(0, 0, "test"));
  42. dctx->setContentType("application/metalink+xml");
  43. RequestGroup rg(&op, std::deque<std::string>());
  44. rg.setDownloadContext(dctx);
  45. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getMetalinkPreDownloadHandler();
  46. CPPUNIT_ASSERT(handler->canHandle(&rg));
  47. dctx->setContentType("application/octet-stream");
  48. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  49. }
  50. void DownloadHandlerFactoryTest::testGetBtPreDownloadHandler_extension()
  51. {
  52. Option op;
  53. SharedHandle<SingleFileDownloadContext> dctx
  54. (new SingleFileDownloadContext(0, 0, "test.torrent"));
  55. RequestGroup rg(&op, std::deque<std::string>());
  56. rg.setDownloadContext(dctx);
  57. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getBtPreDownloadHandler();
  58. CPPUNIT_ASSERT(handler->canHandle(&rg));
  59. dctx->setFilename("test.torrent2");
  60. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  61. }
  62. void DownloadHandlerFactoryTest::testGetBtPreDownloadHandler_contentType()
  63. {
  64. Option op;
  65. SharedHandle<SingleFileDownloadContext> dctx
  66. (new SingleFileDownloadContext(0, 0, "test"));
  67. dctx->setContentType("application/x-bittorrent");
  68. RequestGroup rg(&op, std::deque<std::string>());
  69. rg.setDownloadContext(dctx);
  70. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getBtPreDownloadHandler();
  71. CPPUNIT_ASSERT(handler->canHandle(&rg));
  72. dctx->setContentType("application/octet-stream");
  73. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  74. }
  75. } // namespace aria2