summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2013-12-19 20:07:46 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-27 15:51:27 +0100
commit13aee32e61f20e05fea18a26d35e610fb0e3081f (patch)
treecb56a6c5eccddd45042864c1de3d49bcb4122d5e /tests
parenta001534f832e58cc081512e12a4b7266489f2ad7 (diff)
downloadqtwebchannel-13aee32e61f20e05fea18a26d35e610fb0e3081f.tar.gz
Optimize client initialization by using QJson directly.
Before, we constructed QVariant maps and lists and then converted them to JSON to send the data to the webchannel. By obsoleting the conversion step, benchInitializeClients shows a good performance boost of ca. 19% (11.81ms vs 14.58ms). Change-Id: Ief8e8127207a046f481488a478cd6a18fa0ebffe Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/webchannel/tst_webchannel.cpp132
1 files changed, 99 insertions, 33 deletions
diff --git a/tests/webchannel/tst_webchannel.cpp b/tests/webchannel/tst_webchannel.cpp
index e997bd7..698b5e2 100644
--- a/tests/webchannel/tst_webchannel.cpp
+++ b/tests/webchannel/tst_webchannel.cpp
@@ -95,54 +95,120 @@ void TestWebChannel::testInfoForObject()
TestObject obj;
obj.setObjectName("myTestObject");
QMetaObjectPublisher publisher;
- const QVariantMap info = publisher.classInfoForObject(&obj);
+ const QJsonObject info = publisher.classInfoForObject(&obj);
- QCOMPARE(info.keys(), QList<QString>() << "enums" << "methods" << "properties" << "signals");
+ QCOMPARE(info.keys(), QStringList() << "enums" << "methods" << "properties" << "signals");
{ // enums
- QVariantMap expected;
- QVariantMap fooEnum;
+ QJsonObject fooEnum;
fooEnum["Asdf"] = TestObject::Asdf;
fooEnum["Bar"] = TestObject::Bar;
+ QJsonObject expected;
expected["Foo"] = fooEnum;
- QCOMPARE(info["enums"].toMap(), expected);
+ QCOMPARE(info["enums"].toObject(), expected);
}
{ // methods & slots
- QVariantList expected;
- expected << QVariant::fromValue(QVariantList() << "deleteLater" << obj.metaObject()->indexOfMethod("deleteLater()"));
- expected << QVariant::fromValue(QVariantList() << "slot1" << obj.metaObject()->indexOfMethod("slot1()"));
- expected << QVariant::fromValue(QVariantList() << "slot2" << obj.metaObject()->indexOfMethod("slot2(QString)"));
- expected << QVariant::fromValue(QVariantList() << "method1" << obj.metaObject()->indexOfMethod("method1()"));
- QCOMPARE(info["methods"].toList(), expected);
+ QJsonArray expected;
+ {
+ QJsonArray method;
+ method.append(QStringLiteral("deleteLater"));
+ method.append(obj.metaObject()->indexOfMethod("deleteLater()"));
+ expected.append(method);
+ }
+ {
+ QJsonArray method;
+ method.append(QStringLiteral("slot1"));
+ method.append(obj.metaObject()->indexOfMethod("slot1()"));
+ expected.append(method);
+ }
+ {
+ QJsonArray method;
+ method.append(QStringLiteral("slot2"));
+ method.append(obj.metaObject()->indexOfMethod("slot2(QString)"));
+ expected.append(method);
+ }
+ {
+ QJsonArray method;
+ method.append(QStringLiteral("method1"));
+ method.append(obj.metaObject()->indexOfMethod("method1()"));
+ expected.append(method);
+ }
+ QCOMPARE(info["methods"].toArray(), expected);
}
{ // signals
- QVariantList expected;
- expected << QVariant::fromValue(QVariantList() << "destroyed" << obj.metaObject()->indexOfMethod("destroyed(QObject*)"));
- expected << QVariant::fromValue(QVariantList() << "sig1" << obj.metaObject()->indexOfMethod("sig1()"));
- expected << QVariant::fromValue(QVariantList() << "sig2" << obj.metaObject()->indexOfMethod("sig2(QString)"));
- QCOMPARE(info["signals"].toList(), expected);
+ QJsonArray expected;
+ {
+ QJsonArray signal;
+ signal.append(QStringLiteral("destroyed"));
+ signal.append(obj.metaObject()->indexOfMethod("destroyed(QObject*)"));
+ expected.append(signal);
+ }
+ {
+ QJsonArray signal;
+ signal.append(QStringLiteral("sig1"));
+ signal.append(obj.metaObject()->indexOfMethod("sig1()"));
+ expected.append(signal);
+ }
+ {
+ QJsonArray signal;
+ signal.append(QStringLiteral("sig2"));
+ signal.append(obj.metaObject()->indexOfMethod("sig2(QString)"));
+ expected.append(signal);
+ }
+ QCOMPARE(info["signals"].toArray(), expected);
}
{ // properties
- QVariantList expected;
- expected << QVariant::fromValue(QVariantList() << "objectName"
- << QVariant::fromValue(QVariantList()
- << 1 << obj.metaObject()->indexOfMethod("objectNameChanged(QString)"))
- << obj.objectName());
- expected << QVariant::fromValue(QVariantList() << "foo"
- << QVariant::fromValue(QVariantList())
- << obj.foo());
- expected << QVariant::fromValue(QVariantList() << "asdf"
- << QVariant::fromValue(QVariantList()
- << 1 << obj.metaObject()->indexOfMethod("asdfChanged()"))
- << obj.asdf());
- expected << QVariant::fromValue(QVariantList() << "bar"
- << QVariant::fromValue(QVariantList()
- << "theBarHasChanged" << obj.metaObject()->indexOfMethod("theBarHasChanged()"))
- << obj.bar());
- QCOMPARE(info["properties"].toList(), expected);
+ QJsonArray expected;
+ {
+ QJsonArray property;
+ property.append(QStringLiteral("objectName"));
+ {
+ QJsonArray signal;
+ signal.append(1);
+ signal.append(obj.metaObject()->indexOfMethod("objectNameChanged(QString)"));
+ property.append(signal);
+ }
+ property.append(obj.objectName());
+ expected.append(property);
+ }
+ {
+ QJsonArray property;
+ property.append(QStringLiteral("foo"));
+ {
+ QJsonArray signal;
+ property.append(signal);
+ }
+ property.append(obj.foo());
+ expected.append(property);
+ }
+ {
+ QJsonArray property;
+ property.append(QStringLiteral("asdf"));
+ {
+ QJsonArray signal;
+ signal.append(1);
+ signal.append(obj.metaObject()->indexOfMethod("asdfChanged()"));
+ property.append(signal);
+ }
+ property.append(obj.asdf());
+ expected.append(property);
+ }
+ {
+ QJsonArray property;
+ property.append(QStringLiteral("bar"));
+ {
+ QJsonArray signal;
+ signal.append(QStringLiteral("theBarHasChanged"));
+ signal.append(obj.metaObject()->indexOfMethod("theBarHasChanged()"));
+ property.append(signal);
+ }
+ property.append(obj.bar());
+ expected.append(property);
+ }
+ QCOMPARE(info["properties"].toArray(), expected);
}
}