aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-01-10 11:52:43 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-12 09:33:32 +0100
commit9d73bf289e2719d781670baad1733989a56d7f40 (patch)
tree468c8a6258343874f0781b30c07287485fa4cbaf /tests
parent316e5db8a403ce8493e22361c446a003a5c3770c (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')
-rw-r--r--tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp83
-rw-r--r--tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp37
2 files changed, 87 insertions, 33 deletions
diff --git a/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp
index 78bab0aeef..7d40bc4168 100644
--- a/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp
@@ -3326,28 +3326,32 @@ void tst_qquicktextedit::undo()
QFETCH(QStringList, expectedString);
QString componentStr = "import QtQuick 2.0\nTextEdit { focus: true }";
- QDeclarativeComponent textInputComponent(&engine);
- textInputComponent.setData(componentStr.toLatin1(), QUrl());
- QQuickTextEdit *textInput = qobject_cast<QQuickTextEdit*>(textInputComponent.create());
- QVERIFY(textInput != 0);
+ QDeclarativeComponent textEditComponent(&engine);
+ textEditComponent.setData(componentStr.toLatin1(), QUrl());
+ QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit*>(textEditComponent.create());
+ QVERIFY(textEdit != 0);
QQuickCanvas canvas;
- textInput->setParentItem(canvas.rootItem());
+ textEdit->setParentItem(canvas.rootItem());
canvas.show();
canvas.requestActivateWindow();
QTest::qWaitForWindowShown(&canvas);
QTRY_COMPARE(QGuiApplication::activeWindow(), &canvas);
+ QVERIFY(!textEdit->canUndo());
+
+ QSignalSpy spy(textEdit, SIGNAL(canUndoChanged()));
+
int i;
// STEP 1: First build up an undo history by inserting or typing some strings...
for (i = 0; i < insertString.size(); ++i) {
if (insertIndex[i] > -1)
- textInput->setCursorPosition(insertIndex[i]);
+ textEdit->setCursorPosition(insertIndex[i]);
// experimental stuff
if (insertMode[i] == REPLACE_UNTIL_END) {
- textInput->select(insertIndex[i], insertIndex[i] + 8);
+ textEdit->select(insertIndex[i], insertIndex[i] + 8);
// This is what I actually want...
// QTest::keyClick(testWidget, Qt::Key_End, Qt::ShiftModifier);
@@ -3357,14 +3361,19 @@ void tst_qquicktextedit::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);
+ QCOMPARE(textEdit->text(), expectedString[i]);
+ QVERIFY(textEdit->canUndo());
+ textEdit->undo();
}
// STEP 3: Verify that we have undone everything
- QVERIFY(textInput->text().isEmpty());
+ QVERIFY(textEdit->text().isEmpty());
+ QVERIFY(!textEdit->canUndo());
+ QCOMPARE(spy.count(), 2);
}
void tst_qquicktextedit::redo_data()
@@ -3403,35 +3412,53 @@ void tst_qquicktextedit::redo()
QFETCH(QStringList, expectedString);
QString componentStr = "import QtQuick 2.0\nTextEdit { focus: true }";
- QDeclarativeComponent textInputComponent(&engine);
- textInputComponent.setData(componentStr.toLatin1(), QUrl());
- QQuickTextEdit *textInput = qobject_cast<QQuickTextEdit*>(textInputComponent.create());
- QVERIFY(textInput != 0);
+ QDeclarativeComponent textEditComponent(&engine);
+ textEditComponent.setData(componentStr.toLatin1(), QUrl());
+ QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit*>(textEditComponent.create());
+ QVERIFY(textEdit != 0);
QQuickCanvas canvas;
- textInput->setParentItem(canvas.rootItem());
+ textEdit->setParentItem(canvas.rootItem());
canvas.show();
canvas.requestActivateWindow();
QTest::qWaitForWindowShown(&canvas);
QTRY_COMPARE(QGuiApplication::activeWindow(), &canvas);
+ QVERIFY(!textEdit->canUndo());
+ QVERIFY(!textEdit->canRedo());
+
+ QSignalSpy spy(textEdit, SIGNAL(canRedoChanged()));
+
int i;
// inserts the diff strings at diff positions
for (i = 0; i < insertString.size(); ++i) {
if (insertIndex[i] > -1)
- textInput->setCursorPosition(insertIndex[i]);
+ textEdit->setCursorPosition(insertIndex[i]);
for (int j = 0; j < insertString.at(i).length(); j++)
QTest::keyClick(&canvas, insertString.at(i).at(j).toLatin1());
+ QVERIFY(textEdit->canUndo());
+ QVERIFY(!textEdit->canRedo());
}
+ QCOMPARE(spy.count(), 0);
+
// undo everything
- while (!textInput->text().isEmpty())
- simulateKeys(&canvas, QKeySequence::Undo);
+ while (!textEdit->text().isEmpty()) {
+ QVERIFY(textEdit->canUndo());
+ textEdit->undo();
+ QVERIFY(textEdit->canRedo());
+ }
+
+ QCOMPARE(spy.count(), 1);
for (i = 0; i < expectedString.size(); ++i) {
- simulateKeys(&canvas, QKeySequence::Redo);
- QCOMPARE(textInput->text() , expectedString[i]);
+ QVERIFY(textEdit->canRedo());
+ textEdit->redo();
+ QCOMPARE(textEdit->text() , expectedString[i]);
+ QVERIFY(textEdit->canUndo());
}
+ QVERIFY(!textEdit->canRedo());
+ QCOMPARE(spy.count(), 2);
}
void tst_qquicktextedit::undo_keypressevents_data()
@@ -3578,13 +3605,13 @@ void tst_qquicktextedit::undo_keypressevents()
QFETCH(QStringList, expectedString);
QString componentStr = "import QtQuick 2.0\nTextEdit { focus: true }";
- QDeclarativeComponent textInputComponent(&engine);
- textInputComponent.setData(componentStr.toLatin1(), QUrl());
- QQuickTextEdit *textInput = qobject_cast<QQuickTextEdit*>(textInputComponent.create());
- QVERIFY(textInput != 0);
+ QDeclarativeComponent textEditComponent(&engine);
+ textEditComponent.setData(componentStr.toLatin1(), QUrl());
+ QQuickTextEdit *textEdit = qobject_cast<QQuickTextEdit*>(textEditComponent.create());
+ QVERIFY(textEdit != 0);
QQuickCanvas canvas;
- textInput->setParentItem(canvas.rootItem());
+ textEdit->setParentItem(canvas.rootItem());
canvas.show();
canvas.requestActivateWindow();
QTest::qWaitForWindowShown(&canvas);
@@ -3593,10 +3620,10 @@ void tst_qquicktextedit::undo_keypressevents()
simulateKeys(&canvas, keys);
for (int i = 0; i < expectedString.size(); ++i) {
- QCOMPARE(textInput->text() , expectedString[i]);
- simulateKeys(&canvas, QKeySequence::Undo);
+ QCOMPARE(textEdit->text() , expectedString[i]);
+ textEdit->undo();
}
- QVERIFY(textInput->text().isEmpty());
+ QVERIFY(textEdit->text().isEmpty());
}
void tst_qquicktextedit::emptytags_QTBUG_22058()
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());
}