From c693c0eed9aee6f41dd838f36ad723ec2a5dcfa2 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Tue, 16 May 2017 08:25:52 +0200 Subject: tst_objectcount: data-driven qobjects vs. qquickitems Change-Id: Ia1f9f0fe9d0d907b16159e964573ba1273cc75b9 Reviewed-by: Liang Qi --- tests/benchmarks/objectcount/tst_objectcount.cpp | 79 +++++++++--------------- 1 file changed, 29 insertions(+), 50 deletions(-) (limited to 'tests/benchmarks') 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 &items) +template +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 static void doBenchmark(QQmlEngine *engine, const QUrl &url) { QQmlComponent component(engine); @@ -148,61 +151,37 @@ static void doBenchmark(QQmlEngine *engine, const QUrl &url) QScopedPointer object(component.create()); QVERIFY2(object.data(), qPrintable(component.errorString())); - QList items; - for (QObject *object : qAsConst(*qt_qobjects)) { - QQuickItem *item = qobject_cast(object); - if (item) - items += item; + QObjectList objects; + for (QObject *object : qAsConst(*qt_qobjects())) { + if (qobject_cast(object)) + objects += object; } - printItems(items); -} - -void tst_ObjectCount::calendar() -{ - QFETCH(QUrl, url); - doBenchmark(&engine, url); -} -void tst_ObjectCount::calendar_data() -{ - QTest::addColumn("url"); - addTestRows(&engine, "calendar", "Qt/labs/calendar"); -} - -void tst_ObjectCount::controls() -{ - QFETCH(QUrl, url); - doBenchmark(&engine, url); -} - -void tst_ObjectCount::controls_data() -{ - QTest::addColumn("url"); - addTestRows(&engine, "controls", "QtQuick/Controls.2", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); + printObjects(objects); } -void tst_ObjectCount::material() +void tst_ObjectCount::qobjects() { QFETCH(QUrl, url); - doBenchmark(&engine, url); + doBenchmark(&engine, url); } -void tst_ObjectCount::material_data() +void tst_ObjectCount::qobjects_data() { QTest::addColumn("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(&engine, url); } -void tst_ObjectCount::universal_data() +void tst_ObjectCount::qquickitems_data() { QTest::addColumn("url"); - addTestRows(&engine, "controls/universal", "QtQuick/Controls.2/Universal", QStringList() << "CheckIndicator" << "RadioIndicator" << "SwitchIndicator"); + initTestRows(&engine); } QTEST_MAIN(tst_ObjectCount) -- cgit v1.2.3