summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2011-10-31 15:22:31 +0100
committerQt by Nokia <qt-info@nokia.com>2011-11-14 15:52:26 +0100
commit49bd825a9626eda77fd9e8313e1868bed4c77bff (patch)
tree586101b058be0f70014157c3185504cf65127d2e /tests
parente9c7edddb58bb69a29e75712adfa059dcfcc71fd (diff)
moc: support mapping pointers to member functions to indexes
This change adds QMetaObject::IndexOfMethod as a parameter to the qt_static_metacall function. It lets the moc generated code return the index of a signal or slot given its pointer to member function This is required to support the new connection syntax Change-Id: I39198c6699b5aa3599d3d282f7ac79b1e3684d33 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
index 2831d9fc34..e68f7e5ed1 100644
--- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
+++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
@@ -174,6 +174,8 @@ private slots:
void indexOfMethod_data();
void indexOfMethod();
+ void indexOfMethodPMF();
+
signals:
void value6Changed();
void value7Changed(const QString &);
@@ -290,6 +292,7 @@ void tst_QMetaObject::connectSlotsByName()
class QtTestObject: public QObject
{
+ friend class tst_QMetaObject;
Q_OBJECT
public:
@@ -1115,6 +1118,25 @@ void tst_QMetaObject::indexOfMethod()
QCOMPARE(object->metaObject()->indexOfSignal(name), !isSignal ? -1 : idx);
}
+void tst_QMetaObject::indexOfMethodPMF()
+{
+#define INDEXOFMETHODPMF_HELPER(ObjectType, Name, Arguments) { \
+ int idx = -1; \
+ void (ObjectType::*signal)Arguments = &ObjectType::Name; \
+ void *signal_p = &signal; \
+ void *args[] = { &idx, signal_p, 0}; \
+ ObjectType::qt_static_metacall(0, QMetaObject::IndexOfMethod, 0, args); \
+ QCOMPARE(ObjectType::staticMetaObject.indexOfMethod(QMetaObject::normalizedSignature(#Name #Arguments)), \
+ ObjectType::staticMetaObject.methodOffset() + idx); \
+ }
+
+ INDEXOFMETHODPMF_HELPER(tst_QMetaObject, value7Changed, (const QString&))
+ INDEXOFMETHODPMF_HELPER(tst_QMetaObject, stdSet, ())
+ INDEXOFMETHODPMF_HELPER(QtTestObject, sl10, (QString,QString,QString,QString,QString,QString,QString,QString,QString,QString))
+ INDEXOFMETHODPMF_HELPER(QtTestObject, sig0, ())
+ INDEXOFMETHODPMF_HELPER(QtTestObject, testLongLong, (qint64, quint64))
+ INDEXOFMETHODPMF_HELPER(QtTestObject, testReference, (QString&))
+}
QTEST_MAIN(tst_QMetaObject)
#include "tst_qmetaobject.moc"