aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2020-10-21 19:11:45 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2020-10-22 18:42:29 +0200
commit18ea028a81b64f7ccc78d7d58f39ce18424de564 (patch)
treedd0ae5567388642e9163390e3841483c645ba5ae /tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
parent5a1ae2cf3bff0885d7df1f6527edc66600576d76 (diff)
Make tst_QQuickMultiPointTouchArea::inFlickable() more debuggable
It was all-white despite having two items that react to events, which makes it hard to see what's failing when it fails. Use loops rather than tedious repetitive hard-coded moves to improve readability. "ensure that mouse events do not fall through to the Flickable" must include having the MPTA "eat" the mouse press. Change-Id: Ibca14709afbd561f03a62d74d10e6cae94ab302e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp')
-rw-r--r--tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp129
1 files changed, 45 insertions, 84 deletions
diff --git a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
index 1cb5591519..70f5460c44 100644
--- a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
+++ b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp
@@ -577,7 +577,7 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QScopedPointer<QQuickView> window(createAndShowView("inFlickable.qml"));
QVERIFY(window->rootObject() != nullptr);
- QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(window->rootObject());
+ QQuickFlickable *flickable = window->rootObject()->findChild<QQuickFlickable*>();
QVERIFY(flickable != nullptr);
QQuickMultiPointTouchArea *mpta = window->rootObject()->findChild<QQuickMultiPointTouchArea*>();
@@ -592,25 +592,20 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QPoint p1(20,100);
QPoint p2(40,100);
- //moving one point vertically
+ // moving one point vertically
QTest::touchEvent(window.data(), device).press(0, p1);
QQuickTouchUtils::flush(window.data());
- p1 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1);
- QQuickTouchUtils::flush(window.data());
+ QPoint delta(0, 15);
+ for (int i = 0; i < 4; ++i) {
+ if (lcTests().isDebugEnabled())
+ QTest::qWait(250);
+ p1 += delta;
+ QTest::touchEvent(window.data(), device).move(0, p1);
+ QQuickTouchUtils::flush(window.data());
+ qCDebug(lcTests, "after drag %d to %d,%d contentY is %lf",
+ i, p1.x(), p1.y(), flickable->contentY());
+ }
QVERIFY(flickable->contentY() < 0);
QCOMPARE(point11->pressed(), false);
@@ -621,7 +616,7 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QTRY_VERIFY(!flickable->isMoving());
- //moving two points vertically
+ // moving two points vertically
p1 = QPoint(20,100);
QTest::touchEvent(window.data(), device).press(0, p1).press(1, p2);
QTest::mousePress(window.data(), Qt::LeftButton, Qt::NoModifier, p1);
@@ -629,34 +624,25 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QCOMPARE(point11->pressed(), true);
QCOMPARE(point12->pressed(), true);
- QCOMPARE(flickable->property("cancelCount").toInt(), 0);
- QCOMPARE(flickable->property("touchCount").toInt(), 2);
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
+ QCOMPARE(window->rootObject()->property("cancelCount").toInt(), 0);
+ QCOMPARE(window->rootObject()->property("touchCount").toInt(), 2);
+
+ for (int i = 0; i < 4; ++i) {
+ if (lcTests().isDebugEnabled())
+ QTest::qWait(250);
+ p1 += delta; p2 += delta;
+ QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
+ QTest::mouseMove(window.data(), p1);
+ QQuickTouchUtils::flush(window.data());
+ qCDebug(lcTests, "after drags %d to %d,%d and %d,%d contentY is %lf",
+ i, p1.x(), p1.y(), p2.x(), p2.y(), flickable->contentY());
+ }
QVERIFY(flickable->contentY() < 0);
QCOMPARE(point11->pressed(), false);
QCOMPARE(point12->pressed(), false);
- QCOMPARE(flickable->property("cancelCount").toInt(), 2);
- QCOMPARE(flickable->property("touchCount").toInt(), 0);
+ QCOMPARE(window->rootObject()->property("cancelCount").toInt(), 2);
+ QCOMPARE(window->rootObject()->property("touchCount").toInt(), 0);
QTest::touchEvent(window.data(), device).release(0, p1).release(1, p2);
QTest::mouseRelease(window.data(), Qt::LeftButton, Qt::NoModifier, p1);
@@ -664,57 +650,32 @@ void tst_QQuickMultiPointTouchArea::inFlickable()
QTRY_VERIFY(!flickable->isMoving());
- //moving two points horizontally, then one point vertically
+ // moving two points horizontally, then two points vertically
p1 = QPoint(20,100);
p2 = QPoint(40,100);
QTest::touchEvent(window.data(), device).press(0, p1).press(1, p2);
QQuickTouchUtils::flush(window.data());
// ensure that mouse events do not fall through to the Flickable
mpta->setMaximumTouchPoints(3);
+ mpta->setAcceptedMouseButtons(Qt::LeftButton);
QTest::mousePress(window.data(), Qt::LeftButton, Qt::NoModifier, p1);
QCOMPARE(point11->pressed(), true);
QCOMPARE(point12->pressed(), true);
- p1 += QPoint(15,0); p2 += QPoint(15,0);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(15,0); p2 += QPoint(15,0);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(15,0); p2 += QPoint(15,0);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(15,0); p2 += QPoint(15,0);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
-
- p1 += QPoint(0,15); p2 += QPoint(0,15);
- QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
- QTest::mouseMove(window.data(), p1);
- QQuickTouchUtils::flush(window.data());
+ delta = QPoint(15, 0);
+ for (int i = 0; i < 8; ++i) {
+ if (lcTests().isDebugEnabled())
+ QTest::qWait(250);
+ if (i == 4)
+ delta = QPoint(0, 15);
+ p1 += delta; p2 += delta;
+ QTest::touchEvent(window.data(), device).move(0, p1).move(1, p2);
+ QTest::mouseMove(window.data(), p1);
+ QQuickTouchUtils::flush(window.data());
+ qCDebug(lcTests, "after drags %d to %d,%d and %d,%d contentY is %lf",
+ i, p1.x(), p1.y(), p2.x(), p2.y(), flickable->contentY());
+ }
QCOMPARE(flickable->contentY(), qreal(0));
QCOMPARE(point11->pressed(), true);
@@ -816,7 +777,7 @@ void tst_QQuickMultiPointTouchArea::inFlickableWithPressDelay() // QTBUG-78818
QScopedPointer<QQuickView> window(createAndShowView("inFlickable.qml"));
QVERIFY(window->rootObject() != nullptr);
- QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(window->rootObject());
+ QQuickFlickable *flickable = window->rootObject()->findChild<QQuickFlickable*>();
QVERIFY(flickable != nullptr);
flickable->setPressDelay(50);
@@ -856,7 +817,7 @@ void tst_QQuickMultiPointTouchArea::inFlickableWithPressDelay() // QTBUG-78818
qCDebug(lcTests, "Flickable stole grab from MPTA after %d moves", i);
QCOMPARE(devPriv->pointById(0)->exclusiveGrabber, flickable);
QCOMPARE(point11->pressed(), false);
- QVERIFY(flickable->property("cancelCount").toInt() > 0); // actually 2 because 2 touchPoints are declared... but only one was really cancelled
+ QVERIFY(window->rootObject()->property("cancelCount").toInt() > 0); // actually 2 because 2 touchPoints are declared... but only one was really cancelled
// drag a little more and the Flickable moves
p1 += QPoint(0,1);