aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/shared
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/shared')
-rw-r--r--tests/auto/shared/qtest_quickcontrols.h3
-rw-r--r--tests/auto/shared/util.pri2
-rw-r--r--tests/auto/shared/visualtestutil.cpp15
-rw-r--r--tests/auto/shared/visualtestutil.h33
4 files changed, 44 insertions, 9 deletions
diff --git a/tests/auto/shared/qtest_quickcontrols.h b/tests/auto/shared/qtest_quickcontrols.h
index 4a06c021..17e5a6d2 100644
--- a/tests/auto/shared/qtest_quickcontrols.h
+++ b/tests/auto/shared/qtest_quickcontrols.h
@@ -42,11 +42,12 @@
#include <QtGui/qguiapplication.h>
#include <QtQml/qqml.h>
#include <QtQuickControls2/qquickstyle.h>
+#include <QtQuickControls2/private/qquickstyle_p.h>
static QStringList testStyles()
{
if (QQuickStyle::name().isEmpty())
- return QQuickStyle::availableStyles();
+ return QQuickStylePrivate::builtInStyles();
return QStringList(QQuickStyle::name());
}
diff --git a/tests/auto/shared/util.pri b/tests/auto/shared/util.pri
index 99607a66..c2eb9f0a 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
+QT += testlib-private core-private gui-private qml-private quick-private 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 3eaaa588..bfbf0a17 100644
--- a/tests/auto/shared/visualtestutil.cpp
+++ b/tests/auto/shared/visualtestutil.cpp
@@ -95,7 +95,7 @@ void QQuickVisualTestUtil::centerOnScreen(QQuickWindow *window)
window->setFramePosition(screenGeometry.center() - offset);
}
-void QQuickVisualTestUtil::addTestRowForEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skiplist)
+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.
// For styles that use internal QML types (eg. material/Ripple.qml), the source
@@ -111,7 +111,7 @@ void QQuickVisualTestUtil::addTestRowForEachControl(QQmlEngine *engine, const QS
const QFileInfoList entries = QDir(QQC2_IMPORT_PATH "/" + sourcePath).entryInfoList(QStringList("*.qml"), QDir::Files);
for (const QFileInfo &entry : entries) {
QString name = entry.baseName();
- if (!skiplist.contains(name)) {
+ if (!skipList.contains(name)) {
const auto importPathList = engine->importPathList();
for (const QString &importPath : importPathList) {
QString name = entry.dir().dirName() + "/" + entry.fileName();
@@ -119,13 +119,13 @@ void QQuickVisualTestUtil::addTestRowForEachControl(QQmlEngine *engine, const QS
if (filePath.startsWith(":"))
filePath.prepend("qrc");
if (QFile::exists(filePath)) {
- QTest::newRow(qPrintable(name)) << QUrl::fromLocalFile(filePath);
+ callback(name, QUrl::fromLocalFile(filePath));
break;
} else {
QUrl url(filePath);
filePath = QQmlFile::urlToLocalFileOrQrc(filePath);
if (!filePath.isEmpty() && QFile::exists(filePath)) {
- QTest::newRow(qPrintable(name)) << url;
+ callback(name, url);
break;
}
}
@@ -133,3 +133,10 @@ void QQuickVisualTestUtil::addTestRowForEachControl(QQmlEngine *engine, const QS
}
}
}
+
+void QQuickVisualTestUtil::addTestRowForEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skipList)
+{
+ forEachControl(engine, sourcePath, targetPath, skipList, [&](const QString &relativePath, const QUrl &absoluteUrl) {
+ QTest::newRow(qPrintable(relativePath)) << absoluteUrl;
+ });
+}
diff --git a/tests/auto/shared/visualtestutil.h b/tests/auto/shared/visualtestutil.h
index e3f4075d..726daa27 100644
--- a/tests/auto/shared/visualtestutil.h
+++ b/tests/auto/shared/visualtestutil.h
@@ -37,11 +37,12 @@
#ifndef QQUICKVISUALTESTUTIL_H
#define QQUICKVISUALTESTUTIL_H
+#include <functional>
+
#include <QtQuick/QQuickItem>
#include <QtQml/QQmlExpression>
-
#include <QtQuick/private/qquickitem_p.h>
-
+#include <QtQuickControls2/qquickstyle.h>
#include <QtQuickTemplates2/private/qquickapplicationwindow_p.h>
#include "util.h"
@@ -162,7 +163,33 @@ namespace QQuickVisualTestUtil
QByteArray errorMessage;
};
- void addTestRowForEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skiplist = QStringList());
+ struct QQuickStyleHelper
+ {
+ bool updateStyle(const QString &style)
+ {
+ // If it's not the first time a style has been set and the new style is not different, do nothing.
+ if (!currentStyle.isEmpty() && style == currentStyle)
+ return false;
+
+ engine.reset(new QQmlEngine);
+ currentStyle = style;
+ qmlClearTypeRegistrations();
+ QQuickStyle::setStyle(style);
+
+ QQmlComponent component(engine.data());
+ component.setData(QString("import QtQuick\nimport QtQuick.Controls\n Control { }").toUtf8(), QUrl());
+
+ return true;
+ }
+
+ QString currentStyle;
+ QScopedPointer<QQmlEngine> engine;
+ };
+
+ typedef std::function<void(const QString &/*relativePath*/, const QUrl &/*absoluteUrl*/)> ForEachCallback;
+
+ void forEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skipList, ForEachCallback callback);
+ void addTestRowForEachControl(QQmlEngine *engine, const QString &sourcePath, const QString &targetPath, const QStringList &skipList = QStringList());
}
#define QQUICK_VERIFY_POLISH(item) \