IteratableChecksumValidatorTest.cc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "IteratableChecksumValidator.h"
  2. #include "SingleFileDownloadContext.h"
  3. #include "DefaultPieceStorage.h"
  4. #include "Option.h"
  5. #include "DiskAdaptor.h"
  6. #include "FileEntry.h"
  7. #include <cppunit/extensions/HelperMacros.h>
  8. namespace aria2 {
  9. class IteratableChecksumValidatorTest:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(IteratableChecksumValidatorTest);
  11. CPPUNIT_TEST(testValidate);
  12. CPPUNIT_TEST(testValidate_fail);
  13. CPPUNIT_TEST_SUITE_END();
  14. private:
  15. public:
  16. void setUp() {
  17. }
  18. void testValidate();
  19. void testValidate_fail();
  20. };
  21. CPPUNIT_TEST_SUITE_REGISTRATION( IteratableChecksumValidatorTest );
  22. void IteratableChecksumValidatorTest::testValidate() {
  23. Option option;
  24. SharedHandle<SingleFileDownloadContext> dctx
  25. (new SingleFileDownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
  26. dctx->setChecksum("898a81b8e0181280ae2ee1b81e269196d91e869a");
  27. dctx->setChecksumHashAlgo("sha1");
  28. SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
  29. ps->initStorage();
  30. ps->getDiskAdaptor()->openFile();
  31. IteratableChecksumValidator validator(dctx, ps);
  32. validator.init();
  33. while(!validator.finished()) {
  34. validator.validateChunk();
  35. }
  36. CPPUNIT_ASSERT(ps->downloadFinished());
  37. }
  38. void IteratableChecksumValidatorTest::testValidate_fail() {
  39. Option option;
  40. SharedHandle<SingleFileDownloadContext> dctx
  41. (new SingleFileDownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
  42. dctx->setChecksum(std::string(40, '0')); // set wrong checksum
  43. dctx->setChecksumHashAlgo("sha1");
  44. SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
  45. ps->initStorage();
  46. ps->getDiskAdaptor()->openFile();
  47. IteratableChecksumValidator validator(dctx, ps);
  48. validator.init();
  49. while(!validator.finished()) {
  50. validator.validateChunk();
  51. }
  52. CPPUNIT_ASSERT(!ps->downloadFinished());
  53. }
  54. } // namespace aria2