diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-05-16 08:25:52 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-05-16 06:44:13 +0000 |
commit | c693c0eed9aee6f41dd838f36ad723ec2a5dcfa2 (patch) | |
tree | 6fad7d9e7430047a087003c518aa906c4281d271 /tests | |
parent | 640e781cc61ac4e3f783b1b62e807a2124b7f92e (diff) |
tst_objectcount: data-driven qobjects vs. qquickitems
Change-Id: Ia1f9f0fe9d0d907b16159e964573ba1273cc75b9
Reviewed-by: Liang Qi <liang.qi@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/benchmarks/objectcount/tst_objectcount.cpp | 79 |
1 files changed, 29 insertions, 50 deletions
diff --git a/tests/benchmarks/objectcount/tst_objectcount.cpp b/tests/benchmarks/objectcount/tst_objectcount.cpp index 7f0610ac..e4a7971e 100644 --- a/tests/benchmarks/objectcount/tst_objectcount.cpp +++ b/tests/benchmarks/objectcount/tst_objectcount.cpp @@ -61,17 +61,11 @@ private slots: void init(); void cleanup(); - void calendar(); - void calendar_data(); + void qobjects(); + void qobjects_data(); - void controls(); - void controls_data(); - - void material(); - void material_data(); - - void universal(); - void universal_data(); + void qquickitems(); + void qquickitems_data(); private: QQmlEngine engine; @@ -94,13 +88,14 @@ void tst_ObjectCount::cleanup() qtHookData[QHooks::RemoveQObject] = 0; } -static void printItems(const QList<QQuickItem *> &items) +template <typename T> +static void printObjects(const QObjectList &objects) { std::cout << "RESULT tst_ObjectCount::" << QTest::currentTestFunction() << "():\"" << QTest::currentDataTag() << "\":" << std::endl; - std::cout << " QQuickItems: " << items.count() << " (total of QObjects: " << qt_qobjects->count() << ")" << std::endl; + std::cout << " " << T::staticMetaObject.className() << "s: " << objects.count() << std::endl; if (qt_verbose) { - for (QObject *object : qAsConst(*qt_qobjects)) + for (QObject *object : objects) qInfo() << "\t" << object; } } @@ -138,6 +133,14 @@ static void addTestRows(QQmlEngine *engine, const QString &sourcePath, const QSt } } +static void initTestRows(QQmlEngine *engine) +{ + addTestRows(engine, "controls", "QtQuick/Controls.2", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); + addTestRows(engine, "controls/material", "QtQuick/Controls.2/Material", QStringList() << "Ripple" << "SliderHandle" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator" << "BoxShadow" << "ElevationEffect" << "CursorDelegate"); + addTestRows(engine, "controls/universal", "QtQuick/Controls.2/Universal", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); +} + +template <typename T> static void doBenchmark(QQmlEngine *engine, const QUrl &url) { QQmlComponent component(engine); @@ -148,61 +151,37 @@ static void doBenchmark(QQmlEngine *engine, const QUrl &url) QScopedPointer<QObject> object(component.create()); QVERIFY2(object.data(), qPrintable(component.errorString())); - QList<QQuickItem *> items; - for (QObject *object : qAsConst(*qt_qobjects)) { - QQuickItem *item = qobject_cast<QQuickItem *>(object); - if (item) - items += item; + QObjectList objects; + for (QObject *object : qAsConst(*qt_qobjects())) { + if (qobject_cast<T *>(object)) + objects += object; } - printItems(items); -} - -void tst_ObjectCount::calendar() -{ - QFETCH(QUrl, url); - doBenchmark(&engine, url); -} -void tst_ObjectCount::calendar_data() -{ - QTest::addColumn<QUrl>("url"); - addTestRows(&engine, "calendar", "Qt/labs/calendar"); -} - -void tst_ObjectCount::controls() -{ - QFETCH(QUrl, url); - doBenchmark(&engine, url); -} - -void tst_ObjectCount::controls_data() -{ - QTest::addColumn<QUrl>("url"); - addTestRows(&engine, "controls", "QtQuick/Controls.2", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); + printObjects<T>(objects); } -void tst_ObjectCount::material() +void tst_ObjectCount::qobjects() { QFETCH(QUrl, url); - doBenchmark(&engine, url); + doBenchmark<QObject>(&engine, url); } -void tst_ObjectCount::material_data() +void tst_ObjectCount::qobjects_data() { QTest::addColumn<QUrl>("url"); - addTestRows(&engine, "controls/material", "QtQuick/Controls.2/Material", QStringList() << "Ripple" << "SliderHandle" << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator" << "BoxShadow" << "ElevationEffect" << "CursorDelegate"); + initTestRows(&engine); } -void tst_ObjectCount::universal() +void tst_ObjectCount::qquickitems() { QFETCH(QUrl, url); - doBenchmark(&engine, url); + doBenchmark<QQuickItem>(&engine, url); } -void tst_ObjectCount::universal_data() +void tst_ObjectCount::qquickitems_data() { QTest::addColumn<QUrl>("url"); - addTestRows(&engine, "controls/universal", "QtQuick/Controls.2/Universal", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); + initTestRows(&engine); } QTEST_MAIN(tst_ObjectCount) |