DownloadHandlerFactoryTest.cc 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 = new SingleFileDownloadContext(0, 0, "test.metalink");
  29. RequestGroup rg(&op, std::deque<std::string>());
  30. rg.setDownloadContext(dctx);
  31. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getMetalinkPreDownloadHandler();
  32. CPPUNIT_ASSERT(handler->canHandle(&rg));
  33. dctx->setFilename("test.metalink2");
  34. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  35. }
  36. void DownloadHandlerFactoryTest::testGetMetalinkPreDownloadHandler_contentType()
  37. {
  38. Option op;
  39. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test");
  40. dctx->setContentType("application/metalink+xml");
  41. RequestGroup rg(&op, std::deque<std::string>());
  42. rg.setDownloadContext(dctx);
  43. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getMetalinkPreDownloadHandler();
  44. CPPUNIT_ASSERT(handler->canHandle(&rg));
  45. dctx->setContentType("application/octet-stream");
  46. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  47. }
  48. void DownloadHandlerFactoryTest::testGetBtPreDownloadHandler_extension()
  49. {
  50. Option op;
  51. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test.torrent");
  52. RequestGroup rg(&op, std::deque<std::string>());
  53. rg.setDownloadContext(dctx);
  54. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getBtPreDownloadHandler();
  55. CPPUNIT_ASSERT(handler->canHandle(&rg));
  56. dctx->setFilename("test.torrent2");
  57. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  58. }
  59. void DownloadHandlerFactoryTest::testGetBtPreDownloadHandler_contentType()
  60. {
  61. Option op;
  62. SharedHandle<SingleFileDownloadContext> dctx = new SingleFileDownloadContext(0, 0, "test");
  63. dctx->setContentType("application/x-bittorrent");
  64. RequestGroup rg(&op, std::deque<std::string>());
  65. rg.setDownloadContext(dctx);
  66. SharedHandle<PreDownloadHandler> handler = DownloadHandlerFactory::getBtPreDownloadHandler();
  67. CPPUNIT_ASSERT(handler->canHandle(&rg));
  68. dctx->setContentType("application/octet-stream");
  69. CPPUNIT_ASSERT(!handler->canHandle(&rg));
  70. }
  71. } // namespace aria2