Changeset View
Changeset View
Standalone View
Standalone View
tests/auto/documenttest.cpp
Show First 20 Lines • Show All 528 Lines • ▼ Show 20 Line(s) | 507 | { | |||
---|---|---|---|---|---|
529 | doc->waitUntilLoaded(); | 529 | doc->waitUntilLoaded(); | ||
530 | QVERIFY(!doc->isModified()); | 530 | QVERIFY(!doc->isModified()); | ||
531 | QCOMPARE(modifiedDocumentListChangedSpy.count(), 0); | 531 | QCOMPARE(modifiedDocumentListChangedSpy.count(), 0); | ||
532 | 532 | | |||
533 | // Modify image | 533 | // Modify image | ||
534 | QVERIFY(doc->editor()); | 534 | QVERIFY(doc->editor()); | ||
535 | TestOperation* op = new TestOperation; | 535 | TestOperation* op = new TestOperation; | ||
536 | op->applyToDocument(doc); | 536 | op->applyToDocument(doc); | ||
537 | QTest::qWait(100); | ||||
537 | QVERIFY(doc->isModified()); | 538 | QVERIFY(doc->isModified()); | ||
538 | QCOMPARE(modifiedDocumentListChangedSpy.count(), 1); | 539 | QCOMPARE(modifiedDocumentListChangedSpy.count(), 1); | ||
539 | modifiedDocumentListChangedSpy.clear(); | 540 | modifiedDocumentListChangedSpy.clear(); | ||
540 | QList<QUrl> lst = factory->modifiedDocumentList(); | 541 | QList<QUrl> lst = factory->modifiedDocumentList(); | ||
541 | QCOMPARE(lst.count(), 1); | 542 | QCOMPARE(lst.count(), 1); | ||
542 | QCOMPARE(lst.first(), url); | 543 | QCOMPARE(lst.first(), url); | ||
543 | QCOMPARE(documentChangedSpy.count(), 1); | 544 | QCOMPARE(documentChangedSpy.count(), 1); | ||
544 | args = documentChangedSpy.takeFirst(); | 545 | args = documentChangedSpy.takeFirst(); | ||
▲ Show 20 Lines • Show All 291 Lines • ▼ Show 20 Line(s) | 807 | { | |||
836 | QVERIFY(doc->undoStack()->isClean()); | 837 | QVERIFY(doc->undoStack()->isClean()); | ||
837 | 838 | | |||
838 | // A failed operation should not be added to the undo stack | 839 | // A failed operation should not be added to the undo stack | ||
839 | op = new FailureOperation; | 840 | op = new FailureOperation; | ||
840 | op->applyToDocument(doc); | 841 | op->applyToDocument(doc); | ||
841 | QTest::qWait(100); | 842 | QTest::qWait(100); | ||
842 | QVERIFY(doc->undoStack()->isClean()); | 843 | QVERIFY(doc->undoStack()->isClean()); | ||
843 | } | 844 | } | ||
845 | | ||||
846 | void DocumentTest::testUndoRedo() | ||||
847 | { | ||||
848 | class SuccessOperation : public AbstractImageOperation | ||||
849 | { | ||||
850 | public: | ||||
851 | int mRedoCount = 0; | ||||
852 | int mUndoCount = 0; | ||||
853 | | ||||
854 | protected: | ||||
855 | virtual void redo() | ||||
856 | { | ||||
857 | mRedoCount++; | ||||
858 | finish(true); | ||||
859 | } | ||||
860 | | ||||
861 | virtual void undo() | ||||
862 | { | ||||
863 | mUndoCount++; | ||||
864 | finish(true); | ||||
865 | } | ||||
866 | }; | ||||
867 | | ||||
868 | Document::Ptr doc = DocumentFactory::instance()->load(urlForTestFile("orient6.jpg")); | ||||
869 | QSignalSpy modifiedSpy(doc.data(), &Document::modified); | ||||
870 | QSignalSpy savedSpy(doc.data(), &Document::saved); | ||||
871 | | ||||
872 | SuccessOperation* op = new SuccessOperation; | ||||
873 | QCOMPARE(op->mRedoCount, 0); | ||||
874 | QCOMPARE(op->mUndoCount, 0); | ||||
875 | | ||||
876 | // Apply (redo) operation | ||||
877 | op->applyToDocument(doc); | ||||
878 | QVERIFY(modifiedSpy.wait()); | ||||
879 | QCOMPARE(op->mRedoCount, 1); | ||||
880 | QCOMPARE(op->mUndoCount, 0); | ||||
881 | QCOMPARE(doc->undoStack()->count(), 1); | ||||
882 | QVERIFY(!doc->undoStack()->isClean()); | ||||
883 | | ||||
884 | // Undo operation | ||||
885 | doc->undoStack()->undo(); | ||||
886 | QVERIFY(savedSpy.wait()); | ||||
887 | QCOMPARE(op->mRedoCount, 1); | ||||
888 | QCOMPARE(op->mUndoCount, 1); | ||||
889 | QCOMPARE(doc->undoStack()->count(), 1); | ||||
890 | QVERIFY(doc->undoStack()->isClean()); | ||||
891 | | ||||
892 | // Redo operation | ||||
893 | doc->undoStack()->redo(); | ||||
894 | QVERIFY(modifiedSpy.wait()); | ||||
895 | QCOMPARE(op->mRedoCount, 2); | ||||
896 | QCOMPARE(op->mUndoCount, 1); | ||||
897 | QCOMPARE(doc->undoStack()->count(), 1); | ||||
898 | QVERIFY(!doc->undoStack()->isClean()); | ||||
899 | | ||||
900 | // Undo operation again | ||||
901 | doc->undoStack()->undo(); | ||||
902 | QVERIFY(savedSpy.wait()); | ||||
903 | QCOMPARE(op->mRedoCount, 2); | ||||
904 | QCOMPARE(op->mUndoCount, 2); | ||||
905 | QCOMPARE(doc->undoStack()->count(), 1); | ||||
906 | QVERIFY(doc->undoStack()->isClean()); | ||||
907 | } |