diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-10-21 19:11:45 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-10-22 18:42:29 +0200 |
commit | 18ea028a81b64f7ccc78d7d58f39ce18424de564 (patch) | |
tree | dd0ae5567388642e9163390e3841483c645ba5ae /tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp | |
parent | 5a1ae2cf3bff0885d7df1f6527edc66600576d76 (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.cpp | 129 |
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); |