diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-06-15 13:39:28 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-20 09:34:48 +0200 |
commit | 2bfdc2b540d09b98830557dd13835c6034f5c06c (patch) | |
tree | b5feee1859d43f95c239884a8d1a93c2a39177e8 /tests | |
parent | 42545eaea092b2ba3a762d2356008db0434b998a (diff) |
Add test for queued call of method with unregistered parameter type
Verify that this produces a warning containing the relevant typename.
Change-Id: I046c02585e410a211e9175600b1027dda83bdd9c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp index 8725c934b3..eee3a6258e 100644 --- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp @@ -299,6 +299,8 @@ void tst_QMetaObject::connectSlotsByName() QCOMPARE(obj2.invokeCount2, 1); } +struct MyUnregisteredType { }; + class QtTestObject: public QObject { friend class tst_QMetaObject; @@ -335,6 +337,8 @@ public slots: void moveToThread(QThread *t) { QObject::moveToThread(t); } + void slotWithUnregisteredParameterType(MyUnregisteredType); + signals: void sig0(); QString sig1(QString s1); @@ -402,6 +406,9 @@ void QtTestObject::testSender() slotResult.sprintf("%p", sender()); } +void QtTestObject::slotWithUnregisteredParameterType(MyUnregisteredType) +{ slotResult = "slotWithUnregisteredReturnType"; } + void tst_QMetaObject::invokeMetaMember() { @@ -582,6 +589,14 @@ void tst_QMetaObject::invokeQueuedMetaMember() Q_ARG(quint64, ll2))); qApp->processEvents(QEventLoop::AllEvents); QCOMPARE(obj.slotResult, QString("testLongLong:-1,0")); + + obj.slotResult.clear(); + { + MyUnregisteredType t; + QTest::ignoreMessage(QtWarningMsg, "QMetaMethod::invoke: Unable to handle unregistered datatype 'MyUnregisteredType'"); + QVERIFY(!QMetaObject::invokeMethod(&obj, "slotWithUnregisteredParameterType", Qt::QueuedConnection, Q_ARG(MyUnregisteredType, t))); + QVERIFY(obj.slotResult.isEmpty()); + } } void tst_QMetaObject::invokeBlockingQueuedMetaMember() |