#include "IteratableChecksumValidator.h" #include #include "TestUtil.h" #include "DownloadContext.h" #include "DefaultPieceStorage.h" #include "Option.h" #include "DiskAdaptor.h" #include "FileEntry.h" #include "PieceSelector.h" namespace aria2 { class IteratableChecksumValidatorTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(IteratableChecksumValidatorTest); CPPUNIT_TEST(testValidate); CPPUNIT_TEST(testValidate_fail); CPPUNIT_TEST_SUITE_END(); private: public: void setUp() {} void testValidate(); void testValidate_fail(); }; CPPUNIT_TEST_SUITE_REGISTRATION(IteratableChecksumValidatorTest); void IteratableChecksumValidatorTest::testValidate() { Option option; std::shared_ptr dctx(new DownloadContext( 100, 250, A2_TEST_DIR "/chunkChecksumTestFile250.txt")); dctx->setDigest("sha-1", fromHex("898a81b8e0181280ae2ee1b81e269196d91e869a")); std::shared_ptr ps( new DefaultPieceStorage(dctx, &option)); ps->initStorage(); ps->getDiskAdaptor()->enableReadOnly(); ps->getDiskAdaptor()->openFile(); IteratableChecksumValidator validator(dctx, ps); validator.init(); while (!validator.finished()) { validator.validateChunk(); } CPPUNIT_ASSERT(ps->downloadFinished()); } void IteratableChecksumValidatorTest::testValidate_fail() { Option option; std::shared_ptr dctx(new DownloadContext( 100, 250, A2_TEST_DIR "/chunkChecksumTestFile250.txt")); dctx->setDigest("sha-1", fromHex(std::string(40, '0'))); // set wrong checksum std::shared_ptr ps( new DefaultPieceStorage(dctx, &option)); ps->initStorage(); ps->getDiskAdaptor()->enableReadOnly(); ps->getDiskAdaptor()->openFile(); IteratableChecksumValidator validator(dctx, ps); validator.init(); while (!validator.finished()) { validator.validateChunk(); } CPPUNIT_ASSERT(!ps->downloadFinished()); } } // namespace aria2