diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-01-10 11:52:43 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-12 09:33:32 +0100 |
commit | 9d73bf289e2719d781670baad1733989a56d7f40 (patch) | |
tree | 468c8a6258343874f0781b30c07287485fa4cbaf /tests/auto/qtquick2/qquicktextinput | |
parent | 316e5db8a403ce8493e22361c446a003a5c3770c (diff) |
Add undo and redo functions to TextInput and TextEdit.
The functionality already existed and was usable through keyboard short
cuts but was not accessible through API.
Task-number: QTBUG-16191
Change-Id: I080fa2ddb76668a7a632aa7477004f99037ea68b
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto/qtquick2/qquicktextinput')
-rw-r--r-- | tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp index e37e81d13b..017ac53b3f 100644 --- a/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp @@ -3975,6 +3975,10 @@ void tst_qquicktextinput::undo() QTest::qWaitForWindowShown(&canvas); QTRY_COMPARE(QGuiApplication::activeWindow(), &canvas); + QVERIFY(!textInput->canUndo()); + + QSignalSpy spy(textInput, SIGNAL(canUndoChanged())); + int i; // STEP 1: First build up an undo history by inserting or typing some strings... @@ -3994,14 +3998,19 @@ void tst_qquicktextinput::undo() QTest::keyClick(&canvas, insertString.at(i).at(j).toLatin1()); } + QCOMPARE(spy.count(), 1); + // STEP 2: Next call undo several times and see if we can restore to the previous state for (i = 0; i < expectedString.size() - 1; ++i) { QCOMPARE(textInput->text(), expectedString[i]); - simulateKeys(&canvas, QKeySequence::Undo); + QVERIFY(textInput->canUndo()); + textInput->undo(); } // STEP 3: Verify that we have undone everything QVERIFY(textInput->text().isEmpty()); + QVERIFY(!textInput->canUndo()); + QCOMPARE(spy.count(), 2); } void tst_qquicktextinput::redo_data() @@ -4052,6 +4061,11 @@ void tst_qquicktextinput::redo() QTest::qWaitForWindowShown(&canvas); QTRY_COMPARE(QGuiApplication::activeWindow(), &canvas); + QVERIFY(!textInput->canUndo()); + QVERIFY(!textInput->canRedo()); + + QSignalSpy spy(textInput, SIGNAL(canRedoChanged())); + int i; // inserts the diff strings at diff positions for (i = 0; i < insertString.size(); ++i) { @@ -4059,16 +4073,29 @@ void tst_qquicktextinput::redo() textInput->setCursorPosition(insertIndex[i]); for (int j = 0; j < insertString.at(i).length(); j++) QTest::keyClick(&canvas, insertString.at(i).at(j).toLatin1()); + QVERIFY(textInput->canUndo()); + QVERIFY(!textInput->canRedo()); } + QCOMPARE(spy.count(), 0); + // undo everything - while (!textInput->text().isEmpty()) - simulateKeys(&canvas, QKeySequence::Undo); + while (!textInput->text().isEmpty()) { + QVERIFY(textInput->canUndo()); + textInput->undo(); + QVERIFY(textInput->canRedo()); + } + + QCOMPARE(spy.count(), 1); for (i = 0; i < expectedString.size(); ++i) { - simulateKeys(&canvas, QKeySequence::Redo); + QVERIFY(textInput->canRedo()); + textInput->redo(); QCOMPARE(textInput->text() , expectedString[i]); + QVERIFY(textInput->canUndo()); } + QVERIFY(!textInput->canRedo()); + QCOMPARE(spy.count(), 2); } void tst_qquicktextinput::undo_keypressevents_data() @@ -4230,7 +4257,7 @@ void tst_qquicktextinput::undo_keypressevents() for (int i = 0; i < expectedString.size(); ++i) { QCOMPARE(textInput->text() , expectedString[i]); - simulateKeys(&canvas, QKeySequence::Undo); + textInput->undo(); } QVERIFY(textInput->text().isEmpty()); } |