diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2012-04-24 15:01:47 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-02 10:59:41 +0200 |
commit | bcd477e0bc48bb028193d7707d1ecfbd61b5bdc1 (patch) | |
tree | 5b34c02f76c4e9c8b3aeb7eec6fc69ac3b864e24 /tests | |
parent | ade888860334d207f5f070b0bc9c4c98deaf3862 (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.cpp | 31 |
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() |