From a0c95852fed72fb8b315b7cdea6f7b858d9099ea Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Mon, 16 Nov 2020 17:31:19 +0100 Subject: Add findViewDelegateItem function to visualtestutils.h This helper function finds an item view delegate instance at a given index, ensuring that the view is polished and positioned at the correct index if necessary. Change-Id: Ib133914df723251835be3812c1d0654c07a99f14 Reviewed-by: Volker Hilsheimer Reviewed-by: Richard Moe Gustavsen --- tests/auto/accessibility/CMakeLists.txt | 1 + tests/auto/cursor/CMakeLists.txt | 1 + tests/auto/customization/CMakeLists.txt | 1 + tests/auto/focus/CMakeLists.txt | 1 + tests/auto/font/CMakeLists.txt | 1 + tests/auto/palette/CMakeLists.txt | 1 + tests/auto/qquickapplicationwindow/CMakeLists.txt | 1 + tests/auto/qquickcontrol/CMakeLists.txt | 1 + tests/auto/qquickdrawer/CMakeLists.txt | 1 + tests/auto/qquickheaderview/CMakeLists.txt | 1 + tests/auto/qquickiconimage/CMakeLists.txt | 1 + tests/auto/qquickiconlabel/CMakeLists.txt | 1 + tests/auto/qquickmaterialstyleconf/CMakeLists.txt | 1 + tests/auto/qquickmenu/CMakeLists.txt | 1 + tests/auto/qquickmenubar/CMakeLists.txt | 1 + tests/auto/qquickninepatchimage/CMakeLists.txt | 1 + tests/auto/qquickpopup/CMakeLists.txt | 1 + tests/auto/qquickstyle/CMakeLists.txt | 1 + tests/auto/qquickuniversalstyleconf/CMakeLists.txt | 1 + tests/auto/sanity/CMakeLists.txt | 1 + tests/auto/shared/util.pri | 2 +- tests/auto/shared/visualtestutil.cpp | 29 ++++++++++++++++++++++ tests/auto/shared/visualtestutil.h | 11 ++++++++ tests/auto/styleimports/CMakeLists.txt | 1 + .../styleimportscompiletimematerial/CMakeLists.txt | 1 + .../styleimportscompiletimeqmlonly/CMakeLists.txt | 1 + tests/auto/translation/CMakeLists.txt | 1 + 27 files changed, 65 insertions(+), 1 deletion(-) (limited to 'tests/auto') diff --git a/tests/auto/accessibility/CMakeLists.txt b/tests/auto/accessibility/CMakeLists.txt index fe2a35d6..3286653f 100644 --- a/tests/auto/accessibility/CMakeLists.txt +++ b/tests/auto/accessibility/CMakeLists.txt @@ -31,6 +31,7 @@ qt_internal_add_test(tst_accessibility Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/cursor/CMakeLists.txt b/tests/auto/cursor/CMakeLists.txt index f7a22928..a04e9b44 100644 --- a/tests/auto/cursor/CMakeLists.txt +++ b/tests/auto/cursor/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_cursor Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/customization/CMakeLists.txt b/tests/auto/customization/CMakeLists.txt index 70a7b88c..341e6415 100644 --- a/tests/auto/customization/CMakeLists.txt +++ b/tests/auto/customization/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_customization Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/focus/CMakeLists.txt b/tests/auto/focus/CMakeLists.txt index 404dcfa4..1d15e0fb 100644 --- a/tests/auto/focus/CMakeLists.txt +++ b/tests/auto/focus/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_focus Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/font/CMakeLists.txt b/tests/auto/font/CMakeLists.txt index 5cc92d88..a9904abc 100644 --- a/tests/auto/font/CMakeLists.txt +++ b/tests/auto/font/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_font Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/palette/CMakeLists.txt b/tests/auto/palette/CMakeLists.txt index 6702ac8a..d281db94 100644 --- a/tests/auto/palette/CMakeLists.txt +++ b/tests/auto/palette/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_palette Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickapplicationwindow/CMakeLists.txt b/tests/auto/qquickapplicationwindow/CMakeLists.txt index 20268703..4d4c91ef 100644 --- a/tests/auto/qquickapplicationwindow/CMakeLists.txt +++ b/tests/auto/qquickapplicationwindow/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickapplicationwindow Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickcontrol/CMakeLists.txt b/tests/auto/qquickcontrol/CMakeLists.txt index 5d6eefd2..2a580031 100644 --- a/tests/auto/qquickcontrol/CMakeLists.txt +++ b/tests/auto/qquickcontrol/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickcontrol Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickdrawer/CMakeLists.txt b/tests/auto/qquickdrawer/CMakeLists.txt index 1c2342f0..9e1057d4 100644 --- a/tests/auto/qquickdrawer/CMakeLists.txt +++ b/tests/auto/qquickdrawer/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickdrawer Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickheaderview/CMakeLists.txt b/tests/auto/qquickheaderview/CMakeLists.txt index dfcaa452..62b0211e 100644 --- a/tests/auto/qquickheaderview/CMakeLists.txt +++ b/tests/auto/qquickheaderview/CMakeLists.txt @@ -28,6 +28,7 @@ qt_internal_add_test(tst_qquickheaderview Qt::QuickPrivate Qt::QuickTemplates2 Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickiconimage/CMakeLists.txt b/tests/auto/qquickiconimage/CMakeLists.txt index fdad6ef9..d5d9b5a1 100644 --- a/tests/auto/qquickiconimage/CMakeLists.txt +++ b/tests/auto/qquickiconimage/CMakeLists.txt @@ -36,6 +36,7 @@ qt_internal_add_test(tst_qquickiconimage Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickiconlabel/CMakeLists.txt b/tests/auto/qquickiconlabel/CMakeLists.txt index ffa084f7..ef7ba099 100644 --- a/tests/auto/qquickiconlabel/CMakeLists.txt +++ b/tests/auto/qquickiconlabel/CMakeLists.txt @@ -32,6 +32,7 @@ qt_internal_add_test(tst_qquickiconlabel Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickmaterialstyleconf/CMakeLists.txt b/tests/auto/qquickmaterialstyleconf/CMakeLists.txt index 1244961a..670d1bb6 100644 --- a/tests/auto/qquickmaterialstyleconf/CMakeLists.txt +++ b/tests/auto/qquickmaterialstyleconf/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickmaterialstyleconf Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickmenu/CMakeLists.txt b/tests/auto/qquickmenu/CMakeLists.txt index 702c5747..4a409a61 100644 --- a/tests/auto/qquickmenu/CMakeLists.txt +++ b/tests/auto/qquickmenu/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickmenu Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickmenubar/CMakeLists.txt b/tests/auto/qquickmenubar/CMakeLists.txt index c6043f87..c960f855 100644 --- a/tests/auto/qquickmenubar/CMakeLists.txt +++ b/tests/auto/qquickmenubar/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickmenubar Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickninepatchimage/CMakeLists.txt b/tests/auto/qquickninepatchimage/CMakeLists.txt index 83cf364b..7e98f012 100644 --- a/tests/auto/qquickninepatchimage/CMakeLists.txt +++ b/tests/auto/qquickninepatchimage/CMakeLists.txt @@ -37,6 +37,7 @@ qt_internal_add_test(tst_qquickninepatchimage Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickpopup/CMakeLists.txt b/tests/auto/qquickpopup/CMakeLists.txt index 9b736f80..20adc5db 100644 --- a/tests/auto/qquickpopup/CMakeLists.txt +++ b/tests/auto/qquickpopup/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickpopup Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickstyle/CMakeLists.txt b/tests/auto/qquickstyle/CMakeLists.txt index 153cf19e..258db4cc 100644 --- a/tests/auto/qquickstyle/CMakeLists.txt +++ b/tests/auto/qquickstyle/CMakeLists.txt @@ -31,6 +31,7 @@ qt_internal_add_test(tst_qquickstyle Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/qquickuniversalstyleconf/CMakeLists.txt b/tests/auto/qquickuniversalstyleconf/CMakeLists.txt index ab754043..eaa7b473 100644 --- a/tests/auto/qquickuniversalstyleconf/CMakeLists.txt +++ b/tests/auto/qquickuniversalstyleconf/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_qquickuniversalstyleconf Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/sanity/CMakeLists.txt b/tests/auto/sanity/CMakeLists.txt index 63a8eeb7..85c3bc06 100644 --- a/tests/auto/sanity/CMakeLists.txt +++ b/tests/auto/sanity/CMakeLists.txt @@ -22,6 +22,7 @@ qt_internal_add_test(tst_sanity Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate ) diff --git a/tests/auto/shared/util.pri b/tests/auto/shared/util.pri index c2eb9f0a..3e270f06 100644 --- a/tests/auto/shared/util.pri +++ b/tests/auto/shared/util.pri @@ -1,4 +1,4 @@ -QT += testlib-private core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2 quickcontrols2-private +QT += testlib-private core-private gui-private qml-private quick-private qmltest quicktemplates2-private quickcontrols2 quickcontrols2-private HEADERS += $$PWD/visualtestutil.h \ $$PWD/util.h \ diff --git a/tests/auto/shared/visualtestutil.cpp b/tests/auto/shared/visualtestutil.cpp index 48201832..ff0d9e8e 100644 --- a/tests/auto/shared/visualtestutil.cpp +++ b/tests/auto/shared/visualtestutil.cpp @@ -96,6 +96,35 @@ void QQuickVisualTestUtil::centerOnScreen(QQuickWindow *window) window->setFramePosition(screenGeometry.center() - offset); } +/*! + \internal + + Finds the delegate at \c index belonging to \c itemView, using the given \c flags. + + If the view needs to be polished, the function will wait for it to be done before continuing, + and returns \c nullptr if the polish didn't happen. +*/ +QQuickItem *QQuickVisualTestUtil::findViewDelegateItem(QQuickItemView *itemView, int index, FindViewDelegateItemFlags flags) +{ + if (QQuickTest::qIsPolishScheduled(itemView)) { + if (!QQuickTest::qWaitForItemPolished(itemView)) { + qWarning() << "failed to polish" << itemView; + return nullptr; + } + } + + // Do this after the polish, just in case the count changes after a polish... + if (index <= -1 || index >= itemView->count()) { + qWarning() << "index" << index << "is out of bounds for" << itemView; + return nullptr; + } + + if (flags.testFlag(FindViewDelegateItemFlag::PositionViewAtIndex)) + itemView->positionViewAtIndex(index, QQuickItemView::Center); + + return itemView->itemAtIndex(index); +} + void QQuickVisualTestUtil::forEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skipList, QQuickVisualTestUtil::ForEachCallback callback) { // We cannot use QQmlComponent to load QML files directly from the source tree. diff --git a/tests/auto/shared/visualtestutil.h b/tests/auto/shared/visualtestutil.h index 83c47b2d..1e530c70 100644 --- a/tests/auto/shared/visualtestutil.h +++ b/tests/auto/shared/visualtestutil.h @@ -43,6 +43,8 @@ #include #include #include +#include +#include #include #include #include @@ -116,6 +118,15 @@ namespace QQuickVisualTestUtil return items; } + enum class FindViewDelegateItemFlag { + None = 0x0, + PositionViewAtIndex = 0x01 + }; + Q_DECLARE_FLAGS(FindViewDelegateItemFlags, FindViewDelegateItemFlag) + + QQuickItem* findViewDelegateItem(QQuickItemView *itemView, int index, + FindViewDelegateItemFlags flags = FindViewDelegateItemFlag::PositionViewAtIndex); + class QQuickApplicationHelper { public: diff --git a/tests/auto/styleimports/CMakeLists.txt b/tests/auto/styleimports/CMakeLists.txt index 94e7bce8..c89380b4 100644 --- a/tests/auto/styleimports/CMakeLists.txt +++ b/tests/auto/styleimports/CMakeLists.txt @@ -28,6 +28,7 @@ qt_internal_add_test(tst_styleimports Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/styleimportscompiletimematerial/CMakeLists.txt b/tests/auto/styleimportscompiletimematerial/CMakeLists.txt index 9201503b..207f4091 100644 --- a/tests/auto/styleimportscompiletimematerial/CMakeLists.txt +++ b/tests/auto/styleimportscompiletimematerial/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_styleimportscompiletimematerial Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt b/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt index 57fbc1d3..cdbbf9e8 100644 --- a/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt +++ b/tests/auto/styleimportscompiletimeqmlonly/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_styleimportscompiletimeqmlonly Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) diff --git a/tests/auto/translation/CMakeLists.txt b/tests/auto/translation/CMakeLists.txt index ec8e81ce..783a5072 100644 --- a/tests/auto/translation/CMakeLists.txt +++ b/tests/auto/translation/CMakeLists.txt @@ -27,6 +27,7 @@ qt_internal_add_test(tst_translation Qt::QuickControls2Private Qt::QuickPrivate Qt::QuickTemplates2Private + Qt::QuickTest Qt::TestPrivate TESTDATA ${test_data} ) -- cgit v1.2.3