aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickmousearea
diff options
context:
space:
mode:
authorAdriano Rezende <atdrez@gmail.com>2012-02-26 17:27:34 +0100
committerQt by Nokia <qt-info@nokia.com>2012-06-30 14:39:22 +0200
commitb177bc47efefed3cb1c321a3e2d2bbb2e58351cd (patch)
tree0f5dbca5773633cb8c49659270a0f6d189df16b2 /tests/auto/quick/qquickmousearea
parentfd09392735ada1a8d85534eb8ed0d367e314b755 (diff)
Adjust MouseArea autotest to check mouse events with transformations
Tests mouse events with graphical transformations applied to the element. Change-Id: I4b69e35cde4125aa047fa18357b22b898da92c20 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
Diffstat (limited to 'tests/auto/quick/qquickmousearea')
-rw-r--r--tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml21
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp59
2 files changed, 80 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml b/tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml
new file mode 100644
index 0000000000..80cdda77d3
--- /dev/null
+++ b/tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 400
+ height: 400
+
+ Rectangle {
+ x: 100
+ y: 100
+ width: 200
+ height: 200
+ rotation: 45
+
+ MouseArea {
+ scale: 0.5
+ hoverEnabled: true
+ anchors.fill: parent
+ objectName: "mouseArea"
+ }
+ }
+}
diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
index 4b778745b3..8bc9b06a02 100644
--- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
+++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp
@@ -80,6 +80,8 @@ private slots:
void hoverVisible();
void disableAfterPress();
void onWheel();
+ void transformedMouseArea_data();
+ void transformedMouseArea();
private:
void acceptedButton_data();
@@ -1117,6 +1119,63 @@ void tst_QQuickMouseArea::onWheel()
delete canvas;
}
+void tst_QQuickMouseArea::transformedMouseArea_data()
+{
+ QTest::addColumn<bool>("insideTarget");
+ QTest::addColumn<QList<QPoint> >("points");
+
+ QList<QPoint> pointsInside;
+ pointsInside << QPoint(200, 140)
+ << QPoint(140, 200)
+ << QPoint(200, 200)
+ << QPoint(260, 200)
+ << QPoint(200, 260);
+ QTest::newRow("checking points inside") << true << pointsInside;
+
+ QList<QPoint> pointsOutside;
+ pointsOutside << QPoint(140, 140)
+ << QPoint(260, 140)
+ << QPoint(120, 200)
+ << QPoint(280, 200)
+ << QPoint(140, 260)
+ << QPoint(260, 260);
+ QTest::newRow("checking points outside") << false << pointsOutside;
+}
+
+void tst_QQuickMouseArea::transformedMouseArea()
+{
+ QFETCH(bool, insideTarget);
+ QFETCH(QList<QPoint>, points);
+
+ QQuickView *canvas = createView();
+ canvas->setSource(testFileUrl("transformedMouseArea.qml"));
+ canvas->show();
+ canvas->requestActivateWindow();
+ QVERIFY(canvas->rootObject() != 0);
+
+ QQuickMouseArea *mouseArea = canvas->rootObject()->findChild<QQuickMouseArea *>("mouseArea");
+ QVERIFY(mouseArea != 0);
+
+ foreach (const QPoint &point, points) {
+ // check hover
+ QTest::mouseMove(canvas, point);
+ QTest::qWait(10);
+ QCOMPARE(mouseArea->property("containsMouse").toBool(), insideTarget);
+
+ // check mouse press
+ QTest::mousePress(canvas, Qt::LeftButton, 0, point);
+ QTest::qWait(10);
+ QCOMPARE(mouseArea->property("pressed").toBool(), insideTarget);
+
+ // check mouse release
+ QTest::mouseRelease(canvas, Qt::LeftButton, 0, point);
+ QTest::qWait(10);
+ QCOMPARE(mouseArea->property("pressed").toBool(), false);
+ }
+
+ delete canvas;
+}
+
QTEST_MAIN(tst_QQuickMouseArea)
#include "tst_qquickmousearea.moc"