6#include <QtTest/qsignalspy.h>
7#include <QtQuick/private/qtquickglobal_p.h>
8#if QT_CONFIG(quick_listview)
9#include <QtQuick/private/qquicklistview_p.h>
11#include <QtQuickTest/quicktest.h>
12#include <QtQuickControls2/qquickstyle.h>
13#include <QtQuickTemplates2/private/qquickabstractbutton_p.h>
14#include <QtQuickTemplates2/private/qquickapplicationwindow_p.h>
15#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p.h>
16#if QT_CONFIG(quick_listview)
17#include <QtQuickDialogs2QuickImpl/private/qquickfiledialogdelegate_p.h>
18#include <QtQuickDialogs2QuickImpl/private/qquickfolderbreadcrumbbar_p.h>
19#include <QtQuickDialogs2QuickImpl/private/qquickfolderbreadcrumbbar_p_p.h>
24#if QT_CONFIG(quick_listview)
25bool QQuickDialogTestUtils::verifyFileDialogDelegates(QQuickListView *fileDialogListView,
26 const QStringList &expectedFiles, QString &failureMessage)
28 if (QQuickTest::qIsPolishScheduled(fileDialogListView)) {
29 if (!QQuickTest::qWaitForPolish(fileDialogListView)) {
30 failureMessage = QLatin1String(
"Failed to polish fileDialogListView");
35 QStringList actualFiles;
36 for (
int i = 0; i < fileDialogListView->count(); ++i) {
37 auto delegate = qobject_cast<QQuickFileDialogDelegate*>(
38 QQuickVisualTestUtils::findViewDelegateItem(fileDialogListView, i));
40 failureMessage = QString::fromLatin1(
"Delegate at index %1 is null").arg(i);
45 actualFiles.append(QFileInfo(delegate->file().toLocalFile()).absoluteFilePath());
48 if (actualFiles != expectedFiles) {
49 QString expectedFilesStr = QDebug::toString(expectedFiles);
50 QString actualFilesStr = QDebug::toString(actualFiles);
51 failureMessage = QString::fromLatin1(
"Mismatch in actual vs expected "
52 "delegates in fileDialogListView:\n expected: %1\n actual: %2");
53 if (failureMessage.size() + expectedFilesStr.size() + actualFilesStr.size() > 1024) {
56 expectedFilesStr = QString::number(expectedFiles.size());
57 actualFilesStr = QString::number(actualFiles.size());
59 failureMessage = failureMessage.arg(expectedFilesStr, actualFilesStr);
66bool QQuickDialogTestUtils::verifyBreadcrumbDelegates(QQuickFolderBreadcrumbBar *breadcrumbBar,
67 const QUrl &expectedFolder, QString &failureMessage)
70 failureMessage = QLatin1String(
"breadcrumbBar is null");
74 auto breadcrumbBarListView = qobject_cast<QQuickListView*>(breadcrumbBar->contentItem());
75 if (!breadcrumbBarListView) {
76 failureMessage = QLatin1String(
"breadcrumbBar's ListView is null");
80 if (QQuickTest::qIsPolishScheduled(breadcrumbBarListView)) {
81 if (!QQuickTest::qWaitForPolish(breadcrumbBarListView)) {
82 failureMessage = QLatin1String(
"Failed to polish breadcrumbBarListView");
87 QStringList actualCrumbs;
88 for (
int i = 0; i < breadcrumbBarListView->count(); ++i) {
89 auto delegate = qobject_cast<QQuickAbstractButton*>(
90 QQuickVisualTestUtils::findViewDelegateItem(breadcrumbBarListView, i));
96 actualCrumbs.append(delegate->text());
99 QStringList expectedCrumbs = QQuickFolderBreadcrumbBarPrivate::crumbPathsForFolder(expectedFolder);
100 for (
int i = 0; i < expectedCrumbs.size(); ++i) {
101 QString &crumbPath = expectedCrumbs[i];
102 crumbPath = QQuickFolderBreadcrumbBarPrivate::folderBaseName(crumbPath);
105 if (actualCrumbs != expectedCrumbs) {
106 failureMessage = QString::fromLatin1(
"Mismatch in actual vs expected "
107 "delegates in breadcrumbBarListView:\n expected: %1\n actual: %2")
108 .arg(QDebug::toString(expectedCrumbs), QDebug::toString(actualCrumbs));
118 for (
int i = 0; i < box->count(); ++i) {
119 auto button = qobject_cast<QQuickAbstractButton*>(box->itemAt(i));
120 if (button && button->text().toUpper() == buttonText.toUpper())
128 for (
int i = 0; i < textToEnter.size(); ++i) {
129 const QChar key = textToEnter.at(i);
130 QTest::keyClick(window, key.toLatin1());
void enterText(QWindow *window, const QString &textToEnter)
QQuickAbstractButton * findDialogButton(QQuickDialogButtonBox *box, const QString &buttonText)
Combined button and popup list for selecting options.