DownloadContextTest.cc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "DownloadContext.h"
  2. #include <cppunit/extensions/HelperMacros.h>
  3. #include "FileEntry.h"
  4. #include "array_fun.h"
  5. namespace aria2 {
  6. class DownloadContextTest:public CppUnit::TestFixture {
  7. CPPUNIT_TEST_SUITE(DownloadContextTest);
  8. CPPUNIT_TEST(testFindFileEntryByOffset);
  9. CPPUNIT_TEST(testGetPieceHash);
  10. CPPUNIT_TEST(testGetNumPieces);
  11. CPPUNIT_TEST(testGetBasePath);
  12. CPPUNIT_TEST_SUITE_END();
  13. public:
  14. void testFindFileEntryByOffset();
  15. void testGetPieceHash();
  16. void testGetNumPieces();
  17. void testGetBasePath();
  18. };
  19. CPPUNIT_TEST_SUITE_REGISTRATION(DownloadContextTest);
  20. void DownloadContextTest::testFindFileEntryByOffset()
  21. {
  22. DownloadContext ctx;
  23. CPPUNIT_ASSERT(!ctx.findFileEntryByOffset(0));
  24. const SharedHandle<FileEntry> fileEntries[] =
  25. { SharedHandle<FileEntry>(new FileEntry("file1",1000,0)),
  26. SharedHandle<FileEntry>(new FileEntry("file2",0,1000)),
  27. SharedHandle<FileEntry>(new FileEntry("file3",0,1000)),
  28. SharedHandle<FileEntry>(new FileEntry("file4",2000,1000)),
  29. SharedHandle<FileEntry>(new FileEntry("file5",3000,3000)),
  30. SharedHandle<FileEntry>(new FileEntry("file6",0,6000))
  31. };
  32. ctx.setFileEntries(vbegin(fileEntries), vend(fileEntries));
  33. CPPUNIT_ASSERT_EQUAL(std::string("file1"),
  34. ctx.findFileEntryByOffset(0)->getPath());
  35. CPPUNIT_ASSERT_EQUAL(std::string("file4"),
  36. ctx.findFileEntryByOffset(1500)->getPath());
  37. CPPUNIT_ASSERT_EQUAL(std::string("file5"),
  38. ctx.findFileEntryByOffset(5999)->getPath());
  39. CPPUNIT_ASSERT(!ctx.findFileEntryByOffset(6000));
  40. }
  41. void DownloadContextTest::testGetPieceHash()
  42. {
  43. DownloadContext ctx;
  44. const std::string pieceHashes[] = { "hash1","hash2","shash3" };
  45. ctx.setPieceHashes("sha-1", &pieceHashes[0], &pieceHashes[3]);
  46. CPPUNIT_ASSERT_EQUAL(std::string("hash1"), ctx.getPieceHash(0));
  47. CPPUNIT_ASSERT_EQUAL(std::string(""), ctx.getPieceHash(3));
  48. }
  49. void DownloadContextTest::testGetNumPieces()
  50. {
  51. DownloadContext ctx(345, 9889, "");
  52. CPPUNIT_ASSERT_EQUAL((size_t)29, ctx.getNumPieces());
  53. }
  54. void DownloadContextTest::testGetBasePath()
  55. {
  56. DownloadContext ctx(0, 0, "");
  57. CPPUNIT_ASSERT_EQUAL(std::string(""), ctx.getBasePath());
  58. ctx.getFirstFileEntry()->setPath("aria2.tar.bz2");
  59. CPPUNIT_ASSERT_EQUAL(std::string("aria2.tar.bz2"), ctx.getBasePath());
  60. }
  61. } // namespace aria2