tst_qquickmenu::popup: Make test less flaky
This test is very flaky when running it locally with the Material style. Part of this has to do with the popup's x position sometimes being half a pixel away from the intended location. Fix this by tolerating this 0.5 pixel difference. The reason behind this difference is currently unknown. Another issue is that we don't wait for the menu to close before attempting to open it again. Pick-to: 6.9 6.8 Fixes: QTBUG-133566 Change-Id: I08e68a87d477e6b3a9ea0b5b3350e5c8dc57919b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This commit is contained in:
parent
af41bb104d
commit
cc6f5c40da
|
@ -1175,11 +1175,10 @@ void tst_QQuickMenu::popup()
|
||||||
const qreal elevenOrLeftMargin = qMax(qreal(11), menu->leftMargin());
|
const qreal elevenOrLeftMargin = qMax(qreal(11), menu->leftMargin());
|
||||||
const qreal twentyTwoOrTopMargin = qMax(qreal(22), menu->topMargin());
|
const qreal twentyTwoOrTopMargin = qMax(qreal(22), menu->topMargin());
|
||||||
// If the Menu has large margins, it may be moved to stay within them.
|
// If the Menu has large margins, it may be moved to stay within them.
|
||||||
// QTBUG-75503: QTRY_COMPARE doesn't use qFuzzyCompare() in all cases,
|
static QString errorStringXPos("The menu's x position was %1 and differed too much from %2");
|
||||||
// meaning a lot of these comparisons could trigger a 10 second wait;
|
static QString errorStringYPos("The menu's y position was %1 and differed too much from %2");
|
||||||
// use QTRY_VERIFY and qFuzzyCompare instead.
|
QTRY_VERIFY2(qAbs(menu->x() - elevenOrLeftMargin) <= 0.5, qPrintable(errorStringXPos.arg(menu->x()).arg(elevenOrLeftMargin)));
|
||||||
QTRY_VERIFY(qFuzzyCompare(menu->x(), elevenOrLeftMargin));
|
QTRY_VERIFY2(qAbs(menu->y() - twentyTwoOrTopMargin) <= 0.5, qPrintable(errorStringYPos.arg(menu->y()).arg(twentyTwoOrTopMargin)));
|
||||||
QTRY_VERIFY(qFuzzyCompare(menu->y(), twentyTwoOrTopMargin));
|
|
||||||
menu->close();
|
menu->close();
|
||||||
|
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupAtPos", Q_ARG(QVariant, QPointF(33, 44))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupAtPos", Q_ARG(QVariant, QPointF(33, 44))));
|
||||||
|
@ -1203,8 +1202,10 @@ void tst_QQuickMenu::popup()
|
||||||
QCOMPARE(menu->parentItem(), button);
|
QCOMPARE(menu->parentItem(), button);
|
||||||
QCOMPARE(menu->currentIndex(), -1);
|
QCOMPARE(menu->currentIndex(), -1);
|
||||||
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), -1);
|
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), -1);
|
||||||
QTRY_VERIFY(qFuzzyCompare(menu->x(), button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).x()));
|
QTRY_VERIFY2(qAbs(menu->x() - button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).x()) <= 0.5,
|
||||||
QTRY_VERIFY(qFuzzyCompare(menu->y(), button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).y()));
|
qPrintable(errorStringXPos.arg(menu->x()).arg(button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).x())));
|
||||||
|
QTRY_VERIFY2(qAbs(menu->y() - button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).y()) <= 0.5,
|
||||||
|
qPrintable(errorStringYPos.arg(menu->y()).arg(button->mapFromScene(QPointF(elevenOrLeftMargin, twentyTwoOrTopMargin)).y())));
|
||||||
menu->close();
|
menu->close();
|
||||||
|
|
||||||
menu->setParentItem(nullptr);
|
menu->setParentItem(nullptr);
|
||||||
|
@ -1228,6 +1229,7 @@ void tst_QQuickMenu::popup()
|
||||||
QTRY_VERIFY(qFuzzyCompare(menu->y(), -44));
|
QTRY_VERIFY(qFuzzyCompare(menu->y(), -44));
|
||||||
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-33, -44}).toPoint());
|
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-33, -44}).toPoint());
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
const qreal twelveOrLeftMargin = qMax(qreal(12), menu->leftMargin());
|
const qreal twelveOrLeftMargin = qMax(qreal(12), menu->leftMargin());
|
||||||
cursorPos = window->mapToGlobal(QPoint(twelveOrLeftMargin, window->height() / 2));
|
cursorPos = window->mapToGlobal(QPoint(twelveOrLeftMargin, window->height() / 2));
|
||||||
|
@ -1242,9 +1244,10 @@ void tst_QQuickMenu::popup()
|
||||||
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
||||||
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
|
||||||
QTRY_VERIFY(menu->isOpened());
|
QTRY_VERIFY(menu->isOpened());
|
||||||
QVERIFY(qFuzzyCompare(menu->x(), twelveOrLeftMargin));
|
QTRY_VERIFY2(qAbs(menu->x() - twelveOrLeftMargin) <= 0.5, qPrintable(errorStringXPos.arg(menu->x()).arg(twelveOrLeftMargin)));
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), window->height() / 2 - menu->topPadding() - menuItem->y()));
|
QTRY_VERIFY(qFuzzyCompare(menu->y(), window->height() / 2 - menu->topPadding() - menuItem->y()));
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtPos", Q_ARG(QVariant, QPointF(33, window->height() / 3)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtPos", Q_ARG(QVariant, QPointF(33, window->height() / 3)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
||||||
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
||||||
|
@ -1253,6 +1256,7 @@ void tst_QQuickMenu::popup()
|
||||||
QVERIFY(qFuzzyCompare(menu->x(), 33));
|
QVERIFY(qFuzzyCompare(menu->x(), 33));
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), window->height() / 3 - menu->topPadding() - menuItem->y()));
|
QVERIFY(qFuzzyCompare(menu->y(), window->height() / 3 - menu->topPadding() - menuItem->y()));
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtCoord", Q_ARG(QVariant, 55), Q_ARG(QVariant, window->height() / 3 * 2), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtCoord", Q_ARG(QVariant, 55), Q_ARG(QVariant, window->height() / 3 * 2), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
||||||
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
||||||
|
@ -1261,6 +1265,7 @@ void tst_QQuickMenu::popup()
|
||||||
QVERIFY(qFuzzyCompare(menu->x(), 55));
|
QVERIFY(qFuzzyCompare(menu->x(), 55));
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), window->height() / 3 * 2 - menu->topPadding() - menuItem->y()));
|
QVERIFY(qFuzzyCompare(menu->y(), window->height() / 3 * 2 - menu->topPadding() - menuItem->y()));
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
menu->setParentItem(nullptr);
|
menu->setParentItem(nullptr);
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentCursor", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentCursor", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
||||||
|
@ -1268,9 +1273,11 @@ void tst_QQuickMenu::popup()
|
||||||
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->currentIndex(), menuItems.indexOf(menuItem));
|
||||||
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
|
QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
|
||||||
QTRY_VERIFY(menu->isOpened());
|
QTRY_VERIFY(menu->isOpened());
|
||||||
QVERIFY(qFuzzyCompare(menu->x(), button->mapFromScene(QPoint(twelveOrLeftMargin, window->height() / 2)).x()));
|
QTRY_VERIFY2(qAbs(menu->x() - button->mapFromScene(QPoint(twelveOrLeftMargin, window->height() / 2)).x()) <= 0.5,
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), button->mapFromScene(QPoint(twelveOrLeftMargin, window->height() / 2)).y() - menu->topPadding() - menuItem->y()));
|
qPrintable(errorStringXPos.arg(menu->x()).arg(button->mapFromScene(QPoint(twelveOrLeftMargin, window->height() / 2)).x())));
|
||||||
|
QTRY_VERIFY(qFuzzyCompare(menu->y(), button->mapFromScene(QPoint(twelveOrLeftMargin, window->height() / 2)).y() - menu->topPadding() - menuItem->y()));
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
menu->setParentItem(nullptr);
|
menu->setParentItem(nullptr);
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentPos", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, QPointF(-11, -22)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentPos", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, QPointF(-11, -22)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
||||||
|
@ -1282,6 +1289,7 @@ void tst_QQuickMenu::popup()
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), -22 - menu->topPadding() - menuItem->y()));
|
QVERIFY(qFuzzyCompare(menu->y(), -22 - menu->topPadding() - menuItem->y()));
|
||||||
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-11, -22 - menu->topPadding() - menuItem->y()}).toPoint());
|
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-11, -22 - menu->topPadding() - menuItem->y()}).toPoint());
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
|
|
||||||
menu->setParentItem(nullptr);
|
menu->setParentItem(nullptr);
|
||||||
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentCoord", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, -33), Q_ARG(QVariant, -44), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtParentCoord", Q_ARG(QVariant, QVariant::fromValue(button)), Q_ARG(QVariant, -33), Q_ARG(QVariant, -44), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
|
||||||
|
@ -1293,6 +1301,7 @@ void tst_QQuickMenu::popup()
|
||||||
QVERIFY(qFuzzyCompare(menu->y(), -44 - menu->topPadding() - menuItem->y()));
|
QVERIFY(qFuzzyCompare(menu->y(), -44 - menu->topPadding() - menuItem->y()));
|
||||||
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-33, -44 - menu->topPadding() - menuItem->y()}).toPoint());
|
QCOMPARE(menu->popupItem()->mapToGlobal({0,0}).toPoint(), button->mapToGlobal({-33, -44 - menu->topPadding() - menuItem->y()}).toPoint());
|
||||||
menu->close();
|
menu->close();
|
||||||
|
QTRY_VERIFY(!menu->isVisible());
|
||||||
}
|
}
|
||||||
|
|
||||||
QCursor::setPos(oldCursorPos);
|
QCursor::setPos(oldCursorPos);
|
||||||
|
|
Loading…
Reference in New Issue