From b177bc47efefed3cb1c321a3e2d2bbb2e58351cd Mon Sep 17 00:00:00 2001 From: Adriano Rezende Date: Sun, 26 Feb 2012 17:27:34 +0100 Subject: 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 --- .../qquickmousearea/data/transformedMouseArea.qml | 21 ++++++++ .../quick/qquickmousearea/tst_qquickmousearea.cpp | 59 ++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 tests/auto/quick/qquickmousearea/data/transformedMouseArea.qml (limited to 'tests') 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("insideTarget"); + QTest::addColumn >("points"); + + QList 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 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, points); + + QQuickView *canvas = createView(); + canvas->setSource(testFileUrl("transformedMouseArea.qml")); + canvas->show(); + canvas->requestActivateWindow(); + QVERIFY(canvas->rootObject() != 0); + + QQuickMouseArea *mouseArea = canvas->rootObject()->findChild("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" -- cgit v1.2.3