aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlbert Astals Cid <albert.astals@canonical.com>2013-04-03 11:07:18 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-05 14:08:02 +0200
commitfedd27e1faa65d38a1a5b11f750b5ae2fb5c4006 (patch)
tree435a1b02f1636a8a51579e5fbe201803b136a96b /src
parent6eed3409c4ecf69d3c43cdcbeeca829624b9fe25 (diff)
Make keyClick/Press/Release work with a char
Change-Id: Id821bddd993d4da4458464713a69edfea4aaecaa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src')
-rw-r--r--src/imports/testlib/TestCase.qml27
-rw-r--r--src/imports/testlib/testcase.qdoc4
-rw-r--r--src/qmltest/quicktestevent.cpp30
-rw-r--r--src/qmltest/quicktestevent_p.h4
4 files changed, 58 insertions, 7 deletions
diff --git a/src/imports/testlib/TestCase.qml b/src/imports/testlib/TestCase.qml
index 3df85b415a..f9a1a4918c 100644
--- a/src/imports/testlib/TestCase.qml
+++ b/src/imports/testlib/TestCase.qml
@@ -372,8 +372,13 @@ Item {
modifiers = Qt.NoModifier
if (delay == undefined)
delay = -1
- if (!qtest_events.keyPress(key, modifiers, delay))
- qtest_fail("window not shown", 2)
+ if (typeof(key) == "string" && key.length == 1) {
+ if (!qtest_events.keyPressChar(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ } else {
+ if (!qtest_events.keyPress(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ }
}
function keyRelease(key, modifiers, delay) {
@@ -381,8 +386,13 @@ Item {
modifiers = Qt.NoModifier
if (delay == undefined)
delay = -1
- if (!qtest_events.keyRelease(key, modifiers, delay))
- qtest_fail("window not shown", 2)
+ if (typeof(key) == "string" && key.length == 1) {
+ if (!qtest_events.keyReleaseChar(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ } else {
+ if (!qtest_events.keyRelease(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ }
}
function keyClick(key, modifiers, delay) {
@@ -390,8 +400,13 @@ Item {
modifiers = Qt.NoModifier
if (delay == undefined)
delay = -1
- if (!qtest_events.keyClick(key, modifiers, delay))
- qtest_fail("window not shown", 2)
+ if (typeof(key) == "string" && key.length == 1) {
+ if (!qtest_events.keyClickChar(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ } else {
+ if (!qtest_events.keyClick(key, modifiers, delay))
+ qtest_fail("window not shown", 2)
+ }
}
function mousePress(item, x, y, button, modifiers, delay) {
diff --git a/src/imports/testlib/testcase.qdoc b/src/imports/testlib/testcase.qdoc
index 64fa42d579..56fcb24beb 100644
--- a/src/imports/testlib/testcase.qdoc
+++ b/src/imports/testlib/testcase.qdoc
@@ -174,7 +174,8 @@
The keyPress(), keyRelease(), and keyClick() methods can be used
to simulate keyboard events within unit tests. The events are
- delivered to the currently focused QML item.
+ delivered to the currently focused QML item. You can pass either
+ a Qt.Key enum value or a latin1 char (string of length one)
\code
Rectangle {
@@ -187,6 +188,7 @@
function test_key_click() {
keyClick(Qt.Key_Left)
+ keyClick("a")
...
}
}
diff --git a/src/qmltest/quicktestevent.cpp b/src/qmltest/quicktestevent.cpp
index 16ba80083f..1f72bc65c1 100644
--- a/src/qmltest/quicktestevent.cpp
+++ b/src/qmltest/quicktestevent.cpp
@@ -83,6 +83,36 @@ bool QuickTestEvent::keyClick(int key, int modifiers, int delay)
return true;
}
+bool QuickTestEvent::keyPressChar(const QString &character, int modifiers, int delay)
+{
+ QTEST_ASSERT(character.length() == 1);
+ QWindow *window = eventWindow();
+ if (!window)
+ return false;
+ QTest::keyPress(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay);
+ return true;
+}
+
+bool QuickTestEvent::keyReleaseChar(const QString &character, int modifiers, int delay)
+{
+ QTEST_ASSERT(character.length() == 1);
+ QWindow *window = eventWindow();
+ if (!window)
+ return false;
+ QTest::keyRelease(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay);
+ return true;
+}
+
+bool QuickTestEvent::keyClickChar(const QString &character, int modifiers, int delay)
+{
+ QTEST_ASSERT(character.length() == 1);
+ QWindow *window = eventWindow();
+ if (!window)
+ return false;
+ QTest::keyClick(window, character[0].toLatin1(), Qt::KeyboardModifiers(modifiers), delay);
+ return true;
+}
+
namespace QTest {
extern int Q_TESTLIB_EXPORT defaultMouseDelay();
};
diff --git a/src/qmltest/quicktestevent_p.h b/src/qmltest/quicktestevent_p.h
index de33ff736b..595ea9e1f7 100644
--- a/src/qmltest/quicktestevent_p.h
+++ b/src/qmltest/quicktestevent_p.h
@@ -59,6 +59,10 @@ public Q_SLOTS:
bool keyRelease(int key, int modifiers, int delay);
bool keyClick(int key, int modifiers, int delay);
+ bool keyPressChar(const QString &character, int modifiers, int delay);
+ bool keyReleaseChar(const QString &character, int modifiers, int delay);
+ bool keyClickChar(const QString &character, int modifiers, int delay);
+
bool mousePress(QObject *item, qreal x, qreal y, int button,
int modifiers, int delay);
bool mouseRelease(QObject *item, qreal x, qreal y, int button,