summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-06-15 13:39:28 +0200
committerQt by Nokia <qt-info@nokia.com>2012-06-20 09:34:48 +0200
commit2bfdc2b540d09b98830557dd13835c6034f5c06c (patch)
treeb5feee1859d43f95c239884a8d1a93c2a39177e8 /tests/auto/corelib/kernel
parent42545eaea092b2ba3a762d2356008db0434b998a (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/auto/corelib/kernel')
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp15
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()