From 954eb6121ff149dc14a17328990c8ad1a5fc7190 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 4 Nov 2015 17:17:30 +0100 Subject: tst_objectcount: use components This makes it easier to add different styles to the test. Change-Id: Icd23c809ab9999840b5555f7fb658f38c8b7c15e Reviewed-by: Mitch Curtis --- tests/benchmarks/objectcount/objectcount.pro | 2 + tests/benchmarks/objectcount/tst_objectcount.cpp | 220 +++++++++-------------- 2 files changed, 91 insertions(+), 131 deletions(-) (limited to 'tests') diff --git a/tests/benchmarks/objectcount/objectcount.pro b/tests/benchmarks/objectcount/objectcount.pro index f54d72d6..2cda43d5 100644 --- a/tests/benchmarks/objectcount/objectcount.pro +++ b/tests/benchmarks/objectcount/objectcount.pro @@ -5,5 +5,7 @@ QT += quick testlib core-private CONFIG += testcase osx:CONFIG -= app_bundle +DEFINES += QQC2_IMPORT_PATH=\\\"$$QQC2_SOURCE_TREE/src/imports\\\" + SOURCES += \ tst_objectcount.cpp diff --git a/tests/benchmarks/objectcount/tst_objectcount.cpp b/tests/benchmarks/objectcount/tst_objectcount.cpp index b2170cd5..641d78d1 100644 --- a/tests/benchmarks/objectcount/tst_objectcount.cpp +++ b/tests/benchmarks/objectcount/tst_objectcount.cpp @@ -60,8 +60,14 @@ private slots: void init(); void cleanup(); - void testCount(); - void testCount_data(); + void calendar(); + void calendar_data(); + + void legacy(); + void legacy_data(); + + void controls(); + void controls_data(); private: QQmlEngine engine; @@ -84,178 +90,130 @@ void tst_ObjectCount::cleanup() qtHookData[QHooks::RemoveQObject] = 0; } -static void printItems(const QString &prefix, const QList &items) +static void printItems(const QList &items) { - qInfo() << prefix << "QQuickItems:" << items.count() << "(total of QObjects:" << qt_qobjects->count() << ")"; + qInfo() << "QQuickItems:" << items.count() << "(total of QObjects:" << qt_qobjects->count() << ")"; if (qt_verbose) { foreach (QObject *object, *qt_qobjects) qInfo() << "\t" << object; } } -void tst_ObjectCount::testCount() +static void addTestRows(const QString &path) { - QFETCH(QByteArray, v1); - QFETCH(QByteArray, v2); + QFileInfoList entries = QDir(path).entryInfoList(QStringList("*.qml"), QDir::Files); + foreach (const QFileInfo &entry, entries) + QTest::newRow(qPrintable(entry.baseName())) << QUrl::fromLocalFile(entry.absoluteFilePath()); +} - if (!v1.isEmpty()) { - QQmlComponent component(&engine); +static void doBenchmark(QQmlEngine *engine, const QUrl &url) +{ + QQmlComponent component(engine); - qt_qobjects->clear(); + qt_qobjects->clear(); - component.setData(v1, QUrl()); - QScopedPointer object(component.create()); - QVERIFY2(object.data(), qPrintable(component.errorString())); + component.loadUrl(url); + QScopedPointer object(component.create()); + QVERIFY2(object.data(), qPrintable(component.errorString())); - QList items; - foreach (QObject *object, *qt_qobjects()) { - QQuickItem *item = qobject_cast(object); - if (item) - items += item; - } - printItems("V1", items); + QList items; + foreach (QObject *object, *qt_qobjects()) { + QQuickItem *item = qobject_cast(object); + if (item) + items += item; } + printItems(items); +} + +void tst_ObjectCount::calendar() +{ + QFETCH(QUrl, url); + doBenchmark(&engine, url); +} + +void tst_ObjectCount::calendar_data() +{ + QTest::addColumn("url"); + addTestRows(QQC2_IMPORT_PATH "/calendar"); +} +void tst_ObjectCount::legacy() +{ + QFETCH(QByteArray, data); - if (!v2.isEmpty()) { - QQmlComponent component(&engine); + QQmlComponent component(&engine); - qt_qobjects->clear(); + qt_qobjects->clear(); - component.setData(v2, QUrl()); - QScopedPointer object(component.create()); - QVERIFY2(object.data(), qPrintable(component.errorString())); + component.setData(data, QUrl()); + QScopedPointer object(component.create()); + QVERIFY2(object.data(), qPrintable(component.errorString())); - QList items; - foreach (QObject *object, *qt_qobjects()) { - QQuickItem *item = qobject_cast(object); - if (item) - items += item; - } - printItems("V2", items); + QList items; + foreach (QObject *object, *qt_qobjects()) { + QQuickItem *item = qobject_cast(object); + if (item) + items += item; } + printItems(items); } -void tst_ObjectCount::testCount_data() +void tst_ObjectCount::legacy_data() { - QTest::addColumn("v1"); - QTest::addColumn("v2"); + QTest::addColumn("data"); QTest::newRow("ApplicationWindow") - << QByteArray("import QtQuick.Controls 1.3; ApplicationWindow { }") - << QByteArray("import Qt.labs.controls 1.0; ApplicationWindow { }"); - + << QByteArray("import QtQuick.Controls 1.3; ApplicationWindow { }"); QTest::newRow("BusyIndicator") - << QByteArray("import QtQuick.Controls 1.3; BusyIndicator { }") - << QByteArray("import Qt.labs.controls 1.0; BusyIndicator { }"); - + << QByteArray("import QtQuick.Controls 1.3; BusyIndicator { }"); QTest::newRow("Button") - << QByteArray("import QtQuick.Controls 1.3; Button { }") - << QByteArray("import Qt.labs.controls 1.0; Button { }"); - + << QByteArray("import QtQuick.Controls 1.3; Button { }"); QTest::newRow("CheckBox") - << QByteArray("import QtQuick.Controls 1.3; CheckBox { }") - << QByteArray("import Qt.labs.controls 1.0; CheckBox { }"); - + << QByteArray("import QtQuick.Controls 1.3; CheckBox { }"); QTest::newRow("Dial") - << QByteArray("import QtQuick.Extras 1.3; Dial { }") - << QByteArray("import Qt.labs.controls 1.0; Dial { }"); - - QTest::newRow("Drawer") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; Drawer { }"); - - QTest::newRow("Frame") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; Frame { }"); - + << QByteArray("import QtQuick.Extras 1.3; Dial { }"); QTest::newRow("GroupBox") - << QByteArray("import QtQuick.Controls 1.3; GroupBox { }") - << QByteArray("import Qt.labs.controls 1.0; GroupBox { }"); - + << QByteArray("import QtQuick.Controls 1.3; GroupBox { }"); QTest::newRow("Label") - << QByteArray("import QtQuick.Controls 1.3; Label { }") - << QByteArray("import Qt.labs.controls 1.0; Label { }"); - - QTest::newRow("PageIndicator") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; PageIndicator { }"); - + << QByteArray("import QtQuick.Controls 1.3; Label { }"); QTest::newRow("ProgressBar") - << QByteArray("import QtQuick.Controls 1.3; ProgressBar { }") - << QByteArray("import Qt.labs.controls 1.0; ProgressBar { }"); - + << QByteArray("import QtQuick.Controls 1.3; ProgressBar { }"); QTest::newRow("RadioButton") - << QByteArray("import QtQuick.Controls 1.3; RadioButton { }") - << QByteArray("import Qt.labs.controls 1.0; RadioButton { }"); - - QTest::newRow("RangeSlider") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; RangeSlider { }"); - + << QByteArray("import QtQuick.Controls 1.3; RadioButton { }"); QTest::newRow("ScrollView") - << QByteArray("import QtQuick.Controls 1.3; ScrollView { }") - << QByteArray(); - - QTest::newRow("ScrollIndicator") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; ScrollIndicator { }"); - - QTest::newRow("ScrollBar") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; ScrollBar { }"); - + << QByteArray("import QtQuick.Controls 1.3; ScrollView { }"); QTest::newRow("Slider") - << QByteArray("import QtQuick.Controls 1.3; Slider { }") - << QByteArray("import Qt.labs.controls 1.0; Slider { }"); - + << QByteArray("import QtQuick.Controls 1.3; Slider { }"); QTest::newRow("SpinBox") - << QByteArray("import QtQuick.Controls 1.3; SpinBox { }") - << QByteArray("import Qt.labs.controls 1.0; SpinBox { }"); - + << QByteArray("import QtQuick.Controls 1.3; SpinBox { }"); QTest::newRow("StackView") - << QByteArray("import QtQuick.Controls 1.3; StackView { }") - << QByteArray("import Qt.labs.controls 1.0; StackView { }"); - - QTest::newRow("SwipeView") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; SwipeView { }"); - + << QByteArray("import QtQuick.Controls 1.3; StackView { }"); QTest::newRow("Switch") - << QByteArray("import QtQuick.Controls 1.3; Switch { }") - << QByteArray("import Qt.labs.controls 1.0; Switch { }"); - - QTest::newRow("TabBar") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; TabBar { }"); - - QTest::newRow("TabButton") - << QByteArray() - << QByteArray("import Qt.labs.controls 1.0; TabButton { }"); - + << QByteArray("import QtQuick.Controls 1.3; Switch { }"); QTest::newRow("TabView") - << QByteArray("import QtQuick.Controls 1.3; TabView { }") - << QByteArray(); - + << QByteArray("import QtQuick.Controls 1.3; TabView { }"); QTest::newRow("TextArea") - << QByteArray("import QtQuick.Controls 1.3; TextArea { }") - << QByteArray("import Qt.labs.controls 1.0; TextArea { }"); - + << QByteArray("import QtQuick.Controls 1.3; TextArea { }"); QTest::newRow("TextField") - << QByteArray("import QtQuick.Controls 1.3; TextField { }") - << QByteArray("import Qt.labs.controls 1.0; TextField { }"); - + << QByteArray("import QtQuick.Controls 1.3; TextField { }"); QTest::newRow("ToolBar") - << QByteArray("import QtQuick.Controls 1.3; ToolBar { }") - << QByteArray("import Qt.labs.controls 1.0; ToolBar { }"); - + << QByteArray("import QtQuick.Controls 1.3; ToolBar { }"); QTest::newRow("ToolButton") - << QByteArray("import QtQuick.Controls 1.3; ToolButton { }") - << QByteArray("import Qt.labs.controls 1.0; ToolButton { }"); - + << QByteArray("import QtQuick.Controls 1.3; ToolButton { }"); QTest::newRow("Tumbler") - << QByteArray("import QtQuick.Extras 1.3; Tumbler { }") - << QByteArray("import Qt.labs.controls 1.0; Tumbler { }"); + << QByteArray("import QtQuick.Extras 1.3; Tumbler { }"); +} + +void tst_ObjectCount::controls() +{ + QFETCH(QUrl, url); + doBenchmark(&engine, url); +} + +void tst_ObjectCount::controls_data() +{ + QTest::addColumn("url"); + addTestRows(QQC2_IMPORT_PATH "/controls"); } QTEST_MAIN(tst_ObjectCount) -- cgit v1.2.3