summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp')
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
index 14c1b29836..c884edde04 100644
--- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
+++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
@@ -209,6 +209,7 @@ private slots:
void invokeMetaConstructor();
void invokeTypedefTypes();
void invokeException();
+ void invokeQueuedAutoRegister();
void qtMetaObjectInheritance();
void normalizedSignature_data();
void normalizedSignature();
@@ -380,6 +381,7 @@ class QtTestObject: public QObject
public:
QtTestObject();
+ QtTestObject(const QString &s) : slotResult(s) {}
Q_INVOKABLE QtTestObject(QObject *parent);
public slots:
@@ -419,6 +421,15 @@ public slots:
return s2;
}
+ void slotWithRegistrableArgument(QtTestObject *o1, QPointer<QtTestObject> o2,
+ QSharedPointer<QtTestObject> o3, QWeakPointer<QtTestObject> o4,
+ QVector<QtTestObject *> o5, QList<QtTestObject *> o6)
+ {
+ slotResult = QLatin1String("slotWithRegistrableArgument:") + o1->slotResult + o2->slotResult
+ + o3->slotResult + o4.data()->slotResult + QString::number(o5.size())
+ + QString::number(o6.size());
+ }
+
public:
static void staticFunction0();
static qint64 staticFunction1();
@@ -1114,6 +1125,24 @@ void tst_QMetaObject::invokeException()
#endif
}
+void tst_QMetaObject::invokeQueuedAutoRegister()
+{
+ QtTestObject obj;
+
+ auto shared = QSharedPointer<QtTestObject>::create(QStringLiteral("myShared-"));
+
+ QVERIFY(QMetaObject::invokeMethod(
+ &obj, "slotWithRegistrableArgument", Qt::QueuedConnection,
+ Q_ARG(QtTestObject *, shared.data()), Q_ARG(QPointer<QtTestObject>, shared.data()),
+ Q_ARG(QSharedPointer<QtTestObject>, shared), Q_ARG(QWeakPointer<QtTestObject>, shared),
+ Q_ARG(QVector<QtTestObject *>, QVector<QtTestObject *>()),
+ Q_ARG(QList<QtTestObject *>, QList<QtTestObject *>())));
+ QVERIFY(obj.slotResult.isEmpty());
+ qApp->processEvents(QEventLoop::AllEvents);
+ QCOMPARE(obj.slotResult,
+ QString("slotWithRegistrableArgument:myShared-myShared-myShared-myShared-00"));
+}
+
void tst_QMetaObject::normalizedSignature_data()
{
QTest::addColumn<QString>("signature");