summaryrefslogtreecommitdiff
path: root/tests/auto/webchannel/tst_webchannel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/webchannel/tst_webchannel.cpp')
-rw-r--r--tests/auto/webchannel/tst_webchannel.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp
index 790e5ac..24778c7 100644
--- a/tests/auto/webchannel/tst_webchannel.cpp
+++ b/tests/auto/webchannel/tst_webchannel.cpp
@@ -1127,13 +1127,22 @@ void TestWebChannel::qtbug62388_wrapObjectMultipleTransports()
auto queryObjectInfo = [&channel](QObject *obj, QWebChannelAbstractTransport *transport) {
return channel.d_func()->publisher->wrapResult(QVariant::fromValue(obj), transport).toObject();
};
- const auto objectInfo = queryObjectInfo(&obj, m_dummyTransport);
- QCOMPARE(objectInfo.length(), 3);
- QVERIFY(objectInfo.contains("id"));
- QVERIFY(objectInfo.contains("__QObject*__"));
- QVERIFY(objectInfo.contains("data"));
- QVERIFY(objectInfo.value("__QObject*__").isBool() && objectInfo.value("__QObject*__").toBool());
+ auto verifyObjectInfo = [&obj](const QJsonObject &objectInfo) {
+
+ QCOMPARE(objectInfo.length(), 3);
+ QVERIFY(objectInfo.contains("id"));
+ QVERIFY(objectInfo.contains("__QObject*__"));
+ QVERIFY(objectInfo.contains("data"));
+ QVERIFY(objectInfo.value("__QObject*__").isBool() && objectInfo.value("__QObject*__").toBool());
+
+ const auto propIndex = obj.metaObject()->indexOfProperty("prop");
+ const auto prop = objectInfo["data"].toObject()["properties"].toArray()[propIndex].toArray()[3].toString();
+ QCOMPARE(prop, obj.prop());
+ };
+
+ const auto objectInfo = queryObjectInfo(&obj, m_dummyTransport);
+ verifyObjectInfo(objectInfo);
const auto id = objectInfo.value("id").toString();
@@ -1143,7 +1152,17 @@ void TestWebChannel::qtbug62388_wrapObjectMultipleTransports()
initTransport(&transport);
QCOMPARE(queryObjectInfo(&obj, &transport), objectInfo);
- // don't crash when the transport is destroyed
+ obj.setProp("asdf");
+
+ const auto objectInfo2 = queryObjectInfo(&obj, m_dummyTransport);
+ QVERIFY(objectInfo2 != objectInfo);
+ verifyObjectInfo(objectInfo2);
+
+ DummyTransport transport2;
+ initTransport(&transport2);
+ QCOMPARE(queryObjectInfo(&obj, &transport2), objectInfo2);
+
+ // don't crash when the transports are destroyed
}
QTEST_MAIN(TestWebChannel)