diff options
Diffstat (limited to 'tests/benchmarks/quickcontrols2/creationtime')
4 files changed, 229 insertions, 0 deletions
diff --git a/tests/benchmarks/quickcontrols2/creationtime/CMakeLists.txt b/tests/benchmarks/quickcontrols2/creationtime/CMakeLists.txt new file mode 100644 index 0000000000..d7dcb3da8f --- /dev/null +++ b/tests/benchmarks/quickcontrols2/creationtime/CMakeLists.txt @@ -0,0 +1,43 @@ +# Generated from creationtime.pro. + +##################################################################### +## tst_creationtime Test: +##################################################################### + +qt_internal_add_test(tst_creationtime + SOURCES + ../../../auto/quickcontrols2/shared/qtest_quickcontrols.h + ../../../auto/quickcontrols2/shared/util.cpp ../../../auto/quickcontrols2/shared/util.h + ../../../auto/quickcontrols2/shared/visualtestutil.cpp ../../../auto/quickcontrols2/shared/visualtestutil.h + tst_creationtime.cpp + DEFINES + QQC2_IMPORT_PATH=\\\"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/quickcontrols2\\\" + PUBLIC_LIBRARIES + Qt::CorePrivate + Qt::Gui + Qt::GuiPrivate + Qt::Qml + Qt::QmlPrivate + Qt::QuickControls2 + Qt::QuickControls2Private + Qt::QuickPrivate + Qt::QuickTemplates2Private + Qt::QuickTest + Qt::TestPrivate +) + +#### Keys ignored in scope 1:.:.:creationtime.pro:<TRUE>: +# TEMPLATE = "app" + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_creationtime CONDITION ANDROID OR IOS + DEFINES + QT_QMLTEST_DATADIR=\\\":/data\\\" +) + +qt_internal_extend_target(tst_creationtime CONDITION NOT ANDROID AND NOT IOS + DEFINES + QT_QMLTEST_DATADIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\" +) diff --git a/tests/benchmarks/quickcontrols2/creationtime/creationtime.pro b/tests/benchmarks/quickcontrols2/creationtime/creationtime.pro new file mode 100644 index 0000000000..7d15ebd445 --- /dev/null +++ b/tests/benchmarks/quickcontrols2/creationtime/creationtime.pro @@ -0,0 +1,11 @@ +TEMPLATE = app +TARGET = tst_creationtime + +QT += qml testlib quickcontrols2 +CONFIG += testcase +macos:CONFIG -= app_bundle + +include(../../../auto/shared/util.pri) + +SOURCES += \ + tst_creationtime.cpp diff --git a/tests/benchmarks/quickcontrols2/creationtime/data/dependencies.qml b/tests/benchmarks/quickcontrols2/creationtime/data/dependencies.qml new file mode 100644 index 0000000000..3b8476177f --- /dev/null +++ b/tests/benchmarks/quickcontrols2/creationtime/data/dependencies.qml @@ -0,0 +1,8 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Controls.Fusion +import QtQuick.Controls.Imagine +import QtQuick.Controls.Material +import QtQuick.Controls.Universal + +Control { } diff --git a/tests/benchmarks/quickcontrols2/creationtime/tst_creationtime.cpp b/tests/benchmarks/quickcontrols2/creationtime/tst_creationtime.cpp new file mode 100644 index 0000000000..5577966273 --- /dev/null +++ b/tests/benchmarks/quickcontrols2/creationtime/tst_creationtime.cpp @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCore/qscopedpointer.h> +#include <QtTest> +#include <QtQml> +#include <QtQuickControls2/qquickstyle.h> + +#include "../../../auto/quickcontrols2/shared/visualtestutil.h" + +using namespace QQuickVisualTestUtil; + +class tst_CreationTime : public QObject +{ + Q_OBJECT + +private slots: + void initTestCase(); + void init(); + + void basicStyle(); + void basicStyle_data(); + + void fusion(); + void fusion_data(); + + void imagine(); + void imagine_data(); + + void material(); + void material_data(); + + void universal(); + void universal_data(); + +private: + QQuickStyleHelper styleHelper; +}; + +void tst_CreationTime::initTestCase() +{ + styleHelper.engine.reset(new QQmlEngine); +} + +void tst_CreationTime::init() +{ + styleHelper.engine->clearComponentCache(); +} + +static void doBenchmark(QQuickStyleHelper &styleHelper, const QUrl &url) +{ + const QString tagStr = QString::fromLatin1(QTest::currentDataTag()); + QStringList styleAndFileName = tagStr.split('/'); + QCOMPARE(styleAndFileName.size(), 2); + QString style = styleAndFileName.first(); + style[0] = style.at(0).toUpper(); + styleHelper.updateStyle(style); + + QQmlComponent component(styleHelper.engine.data()); + component.loadUrl(url); + + QObjectList objects; + objects.reserve(4096); + QBENCHMARK { + QObject *object = component.create(); + QVERIFY2(object, qPrintable(component.errorString())); + objects += object; + } + qDeleteAll(objects); +} + +void tst_CreationTime::basicStyle() +{ + QFETCH(QUrl, url); + doBenchmark(styleHelper, url); +} + +void tst_CreationTime::basicStyle_data() +{ + QTest::addColumn<QUrl>("url"); + addTestRowForEachControl(styleHelper.engine.data(), "basic", "QtQuick/Controls/Basic", QStringList() << "ApplicationWindow"); +} + +void tst_CreationTime::fusion() +{ + QFETCH(QUrl, url); + doBenchmark(styleHelper, url); +} + +void tst_CreationTime::fusion_data() +{ + QTest::addColumn<QUrl>("url"); + addTestRowForEachControl(styleHelper.engine.data(), "fusion", "QtQuick/Controls/Fusion", QStringList() << "ApplicationWindow" << "ButtonPanel" << "CheckIndicator" << "RadioIndicator" << "SliderGroove" << "SliderHandle" << "SwitchIndicator"); +} + +void tst_CreationTime::imagine() +{ + QFETCH(QUrl, url); + doBenchmark(styleHelper, url); +} + +void tst_CreationTime::imagine_data() +{ + QTest::addColumn<QUrl>("url"); + addTestRowForEachControl(styleHelper.engine.data(), "imagine", "QtQuick/Controls/Imagine", QStringList() << "ApplicationWindow"); +} + +void tst_CreationTime::material() +{ + QFETCH(QUrl, url); + doBenchmark(styleHelper, url); +} + +void tst_CreationTime::material_data() +{ + QTest::addColumn<QUrl>("url"); + addTestRowForEachControl(styleHelper.engine.data(), "material", "QtQuick/Controls/Material", QStringList() << "ApplicationWindow" << "Ripple" << "SliderHandle" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator" << "BoxShadow" << "ElevationEffect" << "CursorDelegate"); +} + +void tst_CreationTime::universal() +{ + QFETCH(QUrl, url); + doBenchmark(styleHelper, url); +} + +void tst_CreationTime::universal_data() +{ + QTest::addColumn<QUrl>("url"); + addTestRowForEachControl(styleHelper.engine.data(), "universal", "QtQuick/Controls/Universal", QStringList() << "ApplicationWindow" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); +} + +QTEST_MAIN(tst_CreationTime) + +#include "tst_creationtime.moc" |