diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2018-01-25 10:08:19 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-01-25 12:47:12 +0000 |
commit | c66c0ba4ddd3a58a9428f6fe6917457a4321831a (patch) | |
tree | 6ee21d12a1a70638080cc4579f713bcdaf298bb4 | |
parent | bc36eb420e509cddc0faa27860666e80e2513e7e (diff) |
Match QQmlEngineDebugServiceTest to the service
The fact that the service transmits QObject properties by their
objectNames, rather than as proper references is not very useful and in
fact the reason for some strange behavior in QtCreator. However, it's
been that way for a long time and we should test what the service
actually does.
Task-number: QTBUG-65852
Change-Id: I6e489bb9877fae129432b5b3d5d4c7bfb5deaa9b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp | 20 | ||||
-rw-r--r-- | tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp | 2 |
2 files changed, 17 insertions, 5 deletions
diff --git a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp index dbefb3bab5..bdd691732a 100644 --- a/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp +++ b/tests/auto/qml/debugger/qqmlenginedebugservice/tst_qqmlenginedebugservice.cpp @@ -229,8 +229,18 @@ void tst_QQmlEngineDebugService::recursiveObjectTest( QCOMPARE(p.name, QString::fromUtf8(pmeta.name())); - // TODO test complex types - if (pmeta.type() < QVariant::UserType && pmeta.userType() != QMetaType::QVariant) { + if (pmeta.userType() == QMetaType::QObjectStar) { + const QmlDebugObjectReference ref = qvariant_cast<QmlDebugObjectReference>(p.value); + QObject *pobj = qvariant_cast<QObject *>(pmeta.read(o)); + if (pobj) { + if (pobj->objectName().isEmpty()) + QCOMPARE(ref.name, QString("<unnamed object>")); + else + QCOMPARE(ref.name, pobj->objectName()); + } else { + QCOMPARE(ref.name, QString("<unknown value>")); + } + } else if (pmeta.type() < QVariant::UserType && pmeta.userType() != QMetaType::QVariant) { const QVariant expected = pmeta.read(o); QVERIFY2(p.value == expected, QString::fromLatin1("%1 != %2. Details: %3/%4/%5/%6") .arg(QTest::toString(p.value)).arg(QTest::toString(expected)).arg(p.name) @@ -1262,7 +1272,8 @@ void tst_QQmlEngineDebugService::queryObjectTree() QmlDebugObjectReference targetReference = qvariant_cast<QmlDebugObjectReference>(propertyChangeTarget.value); QVERIFY(!targetReference.className.isEmpty()); - QVERIFY(targetReference.debugId != -1); + QCOMPARE(targetReference.debugId, -1); + QCOMPARE(targetReference.name, QString("<unnamed object>")); // check transition QmlDebugObjectReference transition = obj.children[0]; @@ -1280,7 +1291,8 @@ void tst_QQmlEngineDebugService::queryObjectTree() targetReference = qvariant_cast<QmlDebugObjectReference>(animationTarget.value); QVERIFY(!targetReference.className.isEmpty()); - QVERIFY(targetReference.debugId != -1); + QCOMPARE(targetReference.debugId, -1); + QCOMPARE(targetReference.name, QString("<unnamed object>")); QCOMPARE(findProperty(animation.properties,"property").value.toString(), QString("width")); QCOMPARE(findProperty(animation.properties,"duration").value.toInt(), 100); diff --git a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp index c0252a0290..7e736ec400 100644 --- a/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp +++ b/tests/auto/qml/debugger/shared/qqmlenginedebugclient.cpp @@ -385,7 +385,7 @@ void QQmlEngineDebugClient::decode(QPacket &ds, case QmlObjectProperty::Object: { QmlDebugObjectReference obj; - obj.debugId = prop.value.toInt(); + obj.name = data.value.toString(); obj.className = prop.valueTypeName; prop.value = qVariantFromValue(obj); break; |