diff options
author | Adriano Rezende <atdrez@gmail.com> | 2012-02-26 17:27:34 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-30 14:39:22 +0200 |
commit | b177bc47efefed3cb1c321a3e2d2bbb2e58351cd (patch) | |
tree | 0f5dbca5773633cb8c49659270a0f6d189df16b2 /tests | |
parent | fd09392735ada1a8d85534eb8ed0d367e314b755 (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')
-rw-r--r-- | tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml | 21 | ||||
-rw-r--r-- | tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp | 59 |
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" |