void ut_file::testEdittingHistory() { QTemporaryFile testFile1; testFile1.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile1.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillFile *file = new QuillFile(testFile1.fileName(), Strings::png); File *fileObject = file->internalFile(); QVERIFY(file->setDisplayLevel(0)); QVERIFY(!fileObject->hasOriginal()); QFile editHistory(fileObject->editHistoryFileName(fileObject->fileName(), Core::instance()->editHistoryPath())); QVERIFY(!editHistory.exists()); file->runFilter(filter); file->undo(); QVERIFY(editHistory.exists()); QVERIFY(!fileObject->hasOriginal()); }
void ut_stack::testDropRedoHistory() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage resultImage = filter->apply(image); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter2->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillImage resultImage2 = filter2->apply(resultImage); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); file->runFilter(filter2); file->undo(); QVERIFY(file->canRedo()); file->dropRedoHistory(); QVERIFY(!file->canRedo()); delete file; }
void ut_croppedthumbnail::testCroppedThumbnailAfterEdit() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); Quill::setPreviewLevelCount(1); Quill::setPreviewSize(0, QSize(2, 2)); Quill::setMinimumPreviewSize(0, QSize(2, 2)); QuillFile *file = new QuillFile(testFile.fileName()); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Crop); filter->setOption(QuillImageFilter::CropRectangle, QRect(0, 0, 4, 2)); file->runFilter(filter); file->setDisplayLevel(1); Quill::releaseAndWait(); // load 0 Quill::releaseAndWait(); // crop 0 - bad version Quill::releaseAndWait(); // load 1 Quill::releaseAndWait(); // crop 1 Quill::releaseAndWait(); // reform 0 file->setDisplayLevel(0); QCOMPARE(file->allImageLevels().count(), 1); QCOMPARE(file->allImageLevels().first().size(), QSize(2, 2)); QVERIFY(Unittests::compareImage(file->allImageLevels().first(), image.copy(1, 0, 2, 2))); delete file; }
void ut_file::testDifferentPreviewLevels() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); Quill::setPreviewSize(0, QSize(4, 1)); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *file2 = new QuillFile(testFile.fileName(), Strings::png); QSignalSpy spy(file, SIGNAL(imageAvailable(const QuillImageList))); QSignalSpy spy2(file2, SIGNAL(imageAvailable(const QuillImageList))); QVERIFY(file != file2); QVERIFY(file2->setDisplayLevel(1)); QVERIFY(file->setDisplayLevel(0)); file->runFilter(filter); Quill::releaseAndWait(); // load level 0 Quill::releaseAndWait(); // brightness level 0 QCOMPARE(spy.count(), 1); QCOMPARE(spy2.count(), 1); QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); QCOMPARE(file2->image().size(), QSize(4, 1)); QCOMPARE(file2->image().z(), 0); Quill::releaseAndWait(); // load level 1 Quill::releaseAndWait(); // brightness level 1 QCOMPARE(spy.count(), 1); QCOMPARE(spy2.count(), 2); QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); QVERIFY(Unittests::compareImage(file2->image(), imageAfter)); QCOMPARE(file2->image().z(), 1); delete file2; // Ensure that the display level is kept even if the other image reference // is removed. QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); delete file; }
void ut_file::testDoubleRevertRestore() { // Tests that revert and restore still work after a previous revert. QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter2); filter2->setOption(QuillImageFilter::Brightness, QVariant(-20)); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); QVERIFY(file->canRevert()); file->revert(); QVERIFY(file->canRestore()); file->runFilter(filter2); QVERIFY(file->canRevert()); file->revert(); QVERIFY(file->canRestore()); delete file; }
void ut_file::testOriginalAfterSave() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *original = file->original(); // This makes us to setup the original's undo stack QCOMPARE(original->fullImageSize(), image.size()); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage processedImage = filter->apply(image); file->runFilter(filter); file->save(); Quill::releaseAndWait(); Quill::releaseAndWait(); Quill::releaseAndWait(); original->setDisplayLevel(0); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(original->image(), image)); delete file; delete original; }
void ut_file::testLastModified() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QDateTime lastModified = QFileInfo(testFile.fileName()).lastModified(); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QCOMPARE(file->lastModified(), lastModified); delete file; }
void ut_file::testMultipleAccess() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *file2 = new QuillFile(testFile.fileName(), Strings::png); QVERIFY(file != file2); QVERIFY(file->setDisplayLevel(0)); QVERIFY(file2->setDisplayLevel(0)); file->runFilter(filter); Quill::releaseAndWait(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), imageAfter)); QVERIFY(Unittests::compareImage(file2->image(), imageAfter)); file2->undo(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), image)); QVERIFY(Unittests::compareImage(file2->image(), image)); delete file2; file->redo(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), imageAfter)); delete file; }
void ut_stack::testSessionSetup() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); file->runFilter(filter2); file->undo(); QVERIFY(!file->isSession()); QVERIFY(file->canUndo()); QVERIFY(file->canRedo()); file->startSession(); // We are in a session now, cannot undo or redo QVERIFY(file->isSession()); QVERIFY(!file->canUndo()); QVERIFY(!file->canRedo()); // If we end the session now, we should still be able to undo and redo file->endSession(); QVERIFY(!file->isSession()); QVERIFY(file->canUndo()); QVERIFY(file->canRedo()); delete file; }
void ut_file::testSaveAfterDelete() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); QVERIFY(!Quill::isSaveInProgress()); QVERIFY(!file->isSaveInProgress()); file->save(); QVERIFY(Quill::isSaveInProgress()); QVERIFY(file->isSaveInProgress()); delete file; QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // load QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // b/c QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // save QVERIFY(!Quill::isSaveInProgress()); Unittests::compareImage(QImage(testFile.fileName()), imageAfter); }
void ut_file::testOriginal() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage processedImage = filter->apply(image); file->runFilter(filter); QuillFile *original = file->original(); QCOMPARE(file->fileName(), original->fileName()); QCOMPARE(file->originalFileName(), original->originalFileName()); QVERIFY(file->canUndo()); QVERIFY(!original->canUndo()); file->setDisplayLevel(0); Quill::releaseAndWait(); Quill::releaseAndWait(); original->setDisplayLevel(0); Quill::releaseAndWait(); QCOMPARE(file->image(), processedImage); QCOMPARE(original->image(), image); file->remove(); QVERIFY(!file->exists()); QVERIFY(!original->exists()); delete file; delete original; }
void ut_file::testReadOnly() { if (Unittests::isRoot()) { qDebug() << "Running as root, disabling file permissions test!"; return; } QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QFile qFile(testFile.fileName()); qFile.setPermissions(QFile::ReadOwner); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QVERIFY(!file->supportsEditing()); delete file; }
void ut_stack::testUndoRedoDuringSessionRecording() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->startSession(); file->runFilter(filter); file->runFilter(filter2); file->undo(); // Between commands, we should still be able to undo QVERIFY(file->canUndo()); file->undo(); QVERIFY(file->canRedo()); // Between commands, we should still be able to redo file->redo(); QVERIFY(file->canRedo()); delete file; }
void ut_stack::testSessionSaveLoad() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage resultImage = filter->apply(image); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter2->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillImage resultImage2 = filter2->apply(resultImage); QuillImageFilter *filter3 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Flip); QVERIFY(filter); QuillImage resultImage3 = filter3->apply(resultImage2); QuillImageFilter *filter4 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Rotate); QVERIFY(filter); filter4->setOption(QuillImageFilter::Angle, QVariant(90)); QuillImage resultImage4 = filter4->apply(resultImage3); Quill::setEditHistoryPath("/tmp/quill/history"); Quill::setEditHistoryCacheSize(0, 5); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->startSession(); file->runFilter(filter); file->runFilter(filter2); file->endSession(); file->startSession(); file->runFilter(filter3); file->runFilter(filter4); file->endSession(); file->undo(); file->save(); Quill::releaseAndWait(); // load Quill::releaseAndWait(); // filter1 Quill::releaseAndWait(); // filter2 Quill::releaseAndWait(); // save QVERIFY(Unittests::compareImage(QImage(testFile.fileName()), resultImage2)); Quill::cleanup(); Quill::initTestingMode(); Quill::setPreviewSize(0, QSize(8, 2)); Quill::setEditHistoryPath("/tmp/quill/history"); Quill::setEditHistoryCacheSize(0, 5); QuillFile *file2 = new QuillFile(testFile.fileName(), Strings::png); file2->setDisplayLevel(0); Quill::releaseAndWait(); // load QVERIFY(Unittests::compareImage(file2->image(), resultImage2)); file2->redo(); Quill::releaseAndWait(); // load Quill::releaseAndWait(); // filter3 Quill::releaseAndWait(); // filter4 QVERIFY(Unittests::compareImage(file2->image(), resultImage4)); file2->undo(); QVERIFY(Unittests::compareImage(file2->image(), resultImage2)); file2->undo(); Quill::releaseAndWait(); // load QVERIFY(Unittests::compareImage(file2->image(), image)); delete file; delete file2; }
void ut_stack::testSessionUndoRedo() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage resultImage = filter->apply(image); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter2->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillImage resultImage2 = filter2->apply(resultImage); QuillImageFilter *filter3 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Flip); QVERIFY(filter); QuillImage resultImage3 = filter3->apply(resultImage2); QuillImageFilter *filter4 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Rotate); QVERIFY(filter); filter4->setOption(QuillImageFilter::Angle, QVariant(90)); QuillImage resultImage4 = filter4->apply(resultImage3); Quill::setEditHistoryCacheSize(0, 5); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); file->startSession(); file->runFilter(filter2); // Inside a session, we should be able to undo QVERIFY(file->canUndo()); QVERIFY(!file->canRedo()); file->runFilter(filter3); file->endSession(); // Should still be able to undo QVERIFY(file->canUndo()); file->runFilter(filter4); // Get up to date file->setDisplayLevel(0); Quill::releaseAndWait(); Quill::releaseAndWait(); Quill::releaseAndWait(); Quill::releaseAndWait(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), resultImage4)); // Undo - single command file->undo(); QVERIFY(Unittests::compareImage(file->image(), resultImage3)); // Undo - session command file->undo(); QVERIFY(Unittests::compareImage(file->image(), resultImage)); QVERIFY(file->canUndo()); QVERIFY(file->canRedo()); // Redo - session command file->redo(); QVERIFY(Unittests::compareImage(file->image(), resultImage3)); delete file; }
void ut_file::testRevertRestore() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QVERIFY(file->setDisplayLevel(0)); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),false); file->runFilter(filter); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),true); QuillImageFilter *filter1 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Rotate); filter1->setOption(QuillImageFilter::Angle, QVariant(-90)); QuillImage imageAfter1 = filter1->apply(imageAfter); file->runFilter(filter1); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),true); //Test revert file->revert(); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),true); QCOMPARE(file->canRevert(),false); QCOMPARE(file->internalFile()->m_stack->revertIndex(),3); QVERIFY(Unittests::compareImage(file->image(), image)); file->save(); Quill::releaseAndWait(); Quill::releaseAndWait(); //Test restore file->restore(); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),true); QCOMPARE(file->internalFile()->m_stack->revertIndex(),0); QVERIFY(Unittests::compareImage(file->image(), imageAfter1)); //Test redo with revert and restore file->revert(); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),true); QCOMPARE(file->canRevert(),false); QCOMPARE(file->internalFile()->m_stack->revertIndex(),3); file->redo(); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),true); QCOMPARE(file->internalFile()->m_stack->revertIndex(),0); //Test one additional operation after revert file->revert(); Quill::releaseAndWait(); Quill::releaseAndWait(); QCOMPARE(file->canRestore(),true); QCOMPARE(file->canRevert(),false); QCOMPARE(file->internalFile()->m_stack->revertIndex(),2); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_Rotate); filter2->setOption(QuillImageFilter::Angle, QVariant(-90)); file->runFilter(filter2); QCOMPARE(file->canRestore(),false); QCOMPARE(file->canRevert(),true); QCOMPARE(file->internalFile()->m_stack->revertIndex(),0); delete file; }