void Tests::basicTests() { // Create a simple COMBINE archive that contains various files QString fileName = OpenCOR::Core::temporaryFileName(); OpenCOR::COMBINESupport::CombineArchive combineArchive(fileName); int counter = 0; for (int i = 1; i <= 3; ++i) { for (int j = 1; j <= 3; ++j, ++counter) { combineArchive.addFile(QDir::currentPath()+QDir::separator()+OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/dir0%1/file0%2.txt").arg(QString::number(i), QString::number(j)), QString("dir0%1/file0%2.txt").arg(QString::number(i), QString::number(j)), OpenCOR::COMBINESupport::CombineArchiveFile::Format(1+counter%4), !(counter%2)); } } combineArchive.save(); QVERIFY(QFile::exists(fileName)); // Unzip our COMBINE archive OpenCOR::ZIPSupport::QZipReader zipReader(fileName); QTemporaryDir temporaryDir; QVERIFY(zipReader.extractAll(temporaryDir.path())); zipReader.close(); // Make sure that our COMBINE archive's manifest is correct QCOMPARE(OpenCOR::fileContents(temporaryDir.path()+QDir::separator()+"manifest.xml"), OpenCOR::fileContents(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/manifest.xml"))); }
bool CombineFileManager::canLoad(const QString &pFileName) const { // Try to load the COMBINE archive CombineArchive combineArchive(pFileName); return combineArchive.load(); }
void Tests::loadingErrorTests() { // Try to load a non-existent COMBINE archive OpenCOR::COMBINESupport::CombineArchive combineArchive(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/nonexistent.omex")); QVERIFY(!combineArchive.load()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("the archive does not exist")); // Try to load a non-signed COMBINE archive combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/notsigned.omex")); QVERIFY(!combineArchive.reload()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("the archive is not signed")); // Try to load a badly signed COMBINE archive combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/badlysigned.omex")); QVERIFY(!combineArchive.reload()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("the archive does not have the correct signature")); // Try to load a COMBINE archive with no manifest combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/nomanifest.omex")); QVERIFY(combineArchive.reload()); QVERIFY(!combineArchive.isValid()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("the archive does not have a manifest")); // Try to load a COMBINE archive which manifest is not a valid OMEX file combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/notvalidomex.omex")); QVERIFY(combineArchive.reload()); QVERIFY(!combineArchive.isValid()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("the manifest is not a valid OMEX file")); // Try to load a COMBINE archive that contains a non-existent file combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/nonexistentfile.omex")); QVERIFY(combineArchive.reload()); QVERIFY(!combineArchive.isValid()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("<strong>nonexistentfile.txt</strong> could not be found")); // Try to load a COMBINE archive which manifest doesn't reference the // COMBINE archive itself combineArchive.setFileName(OpenCOR::fileName("src/plugins/support/COMBINESupport/tests/data/nocombinearchivereference.omex")); QVERIFY(combineArchive.reload()); QVERIFY(!combineArchive.isValid()); QVERIFY(combineArchive.issues().count() == 1); QCOMPARE(combineArchive.issues().first().message(), QString("no reference to the COMBINE archive itself could be found")); }