diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-10-28 09:36:33 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-10-28 15:26:45 +0100 |
commit | 44e3936db1000ac6445e707a3443661087031551 (patch) | |
tree | 6fb79e8bb557bc0e5045f9d3538ef5554b98bb82 /tests/auto/quick | |
parent | e2cf338a1df9c37e50b31d99df48bd3adc866c52 (diff) |
Improve tst_TouchMouse::pinchOnFlickable
- use for loops instead of tedious repetition
- compare instead of verify to check negative bools
- QTRY_COMPARE instead of qWait
- move touchpoints by drag threshold to ensure repeatability:
both flickable and pincharea wait for the threshold to start reacting
Change-Id: I071fc05280e2156223af57d97079516987a744ab
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/quick')
-rw-r--r-- | tests/auto/quick/touchmouse/tst_touchmouse.cpp | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/tests/auto/quick/touchmouse/tst_touchmouse.cpp b/tests/auto/quick/touchmouse/tst_touchmouse.cpp index 2deaf31079..ac6b579d03 100644 --- a/tests/auto/quick/touchmouse/tst_touchmouse.cpp +++ b/tests/auto/quick/touchmouse/tst_touchmouse.cpp @@ -1043,6 +1043,7 @@ void tst_TouchMouse::pinchOnFlickable() QQuickViewTestUtil::centerOnScreen(window.data()); QVERIFY(QTest::qWaitForWindowActive(window.data())); QVERIFY(window->rootObject() != nullptr); + const int threshold = qApp->styleHints()->startDragDistance(); QQuickPinchArea *pinchArea = window->rootObject()->findChild<QQuickPinchArea*>("pincharea"); QVERIFY(pinchArea); @@ -1051,37 +1052,27 @@ void tst_TouchMouse::pinchOnFlickable() QQuickItem *rect = window->rootObject()->findChild<QQuickItem*>("rect"); QVERIFY(rect); - // flickable - single touch point - QCOMPARE(flickable->contentX(), 0.0); + // flick the flickable with one touchpoint + QCOMPARE(flickable->contentX(), 0); QPoint p = QPoint(100, 100); QTest::touchEvent(window.data(), device).press(0, p, window.data()); QQuickTouchUtils::flush(window.data()); - QCOMPARE(rect->position(), QPointF(200.0, 200.0)); - p -= QPoint(10, 0); - QTest::touchEvent(window.data(), device).move(0, p, window.data()); - QQuickTouchUtils::flush(window.data()); - p -= QPoint(10, 0); - QTest::touchEvent(window.data(), device).move(0, p, window.data()); - QQuickTouchUtils::flush(window.data()); - p -= QPoint(10, 0); - QTest::touchEvent(window.data(), device).move(0, p, window.data()); - QQuickTouchUtils::flush(window.data()); - p -= QPoint(10, 0); - QTest::touchEvent(window.data(), device).move(0, p, window.data()); - QQuickTouchUtils::flush(window.data()); + QCOMPARE(rect->position(), QPointF(200, 200)); + for (int i = 0; i < 4; ++i) { + p -= QPoint(threshold, 0); + QTest::touchEvent(window.data(), device).move(0, p, window.data()); + QQuickTouchUtils::flush(window.data()); + if (!flickable->isAtXBeginning()) // currently happens when i == 3 + qCDebug(lcTests, "flicking after %d moves: %lf", i + 1, flickable->contentX()); + } QTest::touchEvent(window.data(), device).release(0, p, window.data()); - QQuickTouchUtils::flush(window.data()); - - QGuiApplication::processEvents(); - QTest::qWait(10); - QVERIFY(!flickable->isAtXBeginning()); + QTRY_COMPARE(flickable->isAtXBeginning(), false); // wait until flicking is done - QTRY_VERIFY(!flickable->isFlicking()); + QTRY_COMPARE(flickable->isFlicking(), false); - // pinch + // pinch with two touchpoints QPoint p1 = QPoint(40, 20); QPoint p2 = QPoint(60, 20); - QTest::QTouchEventSequence pinchSequence = QTest::touchEvent(window.data(), device); QQuickTouchUtils::flush(window.data()); pinchSequence.press(0, p1, window.data()).commit(); @@ -1093,27 +1084,19 @@ void tst_TouchMouse::pinchOnFlickable() // it is outside its bounds. pinchSequence.stationary(0).press(1, p2, window.data()).commit(); QQuickTouchUtils::flush(window.data()); - p1 -= QPoint(10,10); - p2 += QPoint(10,10); - pinchSequence.move(0, p1, window.data()).move(1, p2, window.data()).commit(); - QQuickTouchUtils::flush(window.data()); - QCOMPARE(rect->scale(), 1.0); - p1 -= QPoint(10, 0); - p2 += QPoint(10, 0); - pinchSequence.move(0, p1, window.data()).move(1, p2, window.data()).commit(); - QQuickTouchUtils::flush(window.data()); - p1 -= QPoint(10, 0); - p2 += QPoint(10, 0); - pinchSequence.move(0, p1, window.data()).move(1, p2, window.data()).commit(); - QQuickTouchUtils::flush(window.data()); - p1 -= QPoint(10, 0); - p2 += QPoint(10, 0); - pinchSequence.move(0, p1, window.data()).move(1, p2, window.data()).commit(); + QCOMPARE(rect->scale(), 1); + for (int i = 0; i < 3; ++i) { + p1 -= QPoint(threshold, 0); + p2 += QPoint(threshold, 0); + pinchSequence.move(0, p1, window.data()).move(1, p2, window.data()).commit(); + QQuickTouchUtils::flush(window.data()); + qCDebug(lcTests, "pinch scale after %d moves: %lf", i + 1, rect->scale()); + } QVERIFY(!flickable->isDragging()); QQuickTouchUtils::flush(window.data()); pinchSequence.release(0, p1, window.data()).release(1, p2, window.data()).commit(); QQuickTouchUtils::flush(window.data()); - QVERIFY(rect->scale() > 1.0); + QVERIFY(rect->scale() > 1); // depends on threshold } void tst_TouchMouse::flickableOnPinch() |