summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2012-04-24 15:01:47 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-02 10:59:41 +0200
commitbcd477e0bc48bb028193d7707d1ecfbd61b5bdc1 (patch)
tree5b34c02f76c4e9c8b3aeb7eec6fc69ac3b864e24 /tests
parentade888860334d207f5f070b0bc9c4c98deaf3862 (diff)
Introduce QObject::isSignalConnected(QMetaMethod)
This is much more performant than calling QObject::receivers(const char*) Can be used instead of connectNotify in some cases. Change-Id: I19e0933f678f171f515d9a0f69f0ad4fb7d894b4 Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 54704bf5d9..e5da03c890 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -3774,6 +3774,7 @@ public:
void tst_QObject::isSignalConnected()
{
ManySignals o;
+ const QMetaObject *meta = o.metaObject();
o.rec = 0;
#ifdef QT_BUILD_INTERNAL
QObjectPrivate *priv = QObjectPrivate::get(&o);
@@ -3784,6 +3785,13 @@ void tst_QObject::isSignalConnected()
QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig29()")));
QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig60()")));
#endif
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("destroyed()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig00()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig05()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig15()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig29()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig60()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig69()"))));
QObject::connect(&o, SIGNAL(sig00()), &o, SIGNAL(sig69()));
QObject::connect(&o, SIGNAL(sig34()), &o, SIGNAL(sig03()));
@@ -3802,6 +3810,18 @@ void tst_QObject::isSignalConnected()
QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig18()")));
#endif
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("destroyed()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("destroyed(QObject*)"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig05()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig15()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig29()"))));
+
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig00()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig03()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig34()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig69()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig18()"))));
+
QObject::connect(&o, SIGNAL(sig18()), &o, SIGNAL(sig29()));
QObject::connect(&o, SIGNAL(sig29()), &o, SIGNAL(sig62()));
@@ -3815,6 +3835,11 @@ void tst_QObject::isSignalConnected()
QVERIFY(priv->isSignalConnected(priv->signalIndex("sig69()")));
QVERIFY(!priv->isSignalConnected(priv->signalIndex("sig27()")));
#endif
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig18()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig62()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig28()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("sig69()"))));
+ QVERIFY(!o.isSignalConnected(meta->method(meta->indexOfSignal("sig27()"))));
QCOMPARE(o.rec, 0);
emit o.sig01();
@@ -3845,6 +3870,12 @@ void tst_QObject::isSignalConnected()
QCOMPARE(o.rec, 2);
emit o.sig36();
QCOMPARE(o.rec, 2);
+
+ QObject::connect(&o, &QObject::destroyed, qt_noop);
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("destroyed()"))));
+ QVERIFY(o.isSignalConnected(meta->method(meta->indexOfSignal("destroyed(QObject*)"))));
+
+ QVERIFY(!o.isSignalConnected(QMetaMethod()));
}
void tst_QObject::qMetaObjectConnect()