diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-10-11 16:16:29 +0200 |
---|---|---|
committer | Alexandru Croitor <alexandru.croitor@qt.io> | 2019-10-11 16:23:19 +0200 |
commit | f4b4c4f79b629498f3cddbbc10df8c1b4d6020d9 (patch) | |
tree | 4119707660438ff58bd51f9cbe0f9e2a33f4b806 /tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp | |
parent | 9bd6cec74dbbc5aece55dc0c8808494db29b9963 (diff) | |
parent | 93f2f33a49f6c96a4f94f344edf03164ed944d02 (diff) |
Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
Change-Id: I3a1d7673c3c20019ab12a2ea0a60f1619920a34c
Diffstat (limited to 'tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp')
-rw-r--r-- | tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp index df241c030e..9555c2a844 100644 --- a/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp +++ b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp @@ -65,6 +65,11 @@ private slots: void waitFunctionPointer_signalEmittedLater(); void waitFunctionPointer_signalEmittedTooLate(); void waitFunctionPointer_signalEmittedMultipleTimes(); + + void spyOnMetaMethod(); + + void spyOnMetaMethod_invalid(); + void spyOnMetaMethod_invalid_data(); }; class QtTestObject: public QObject @@ -432,5 +437,52 @@ void tst_QSignalSpy::waitFunctionPointer_signalEmittedMultipleTimes() QCOMPARE(spy.count(), 3); } +void tst_QSignalSpy::spyOnMetaMethod() +{ + QObject obj; + auto mo = obj.metaObject(); + + auto signalIndex = mo->indexOfSignal("objectNameChanged(QString)"); + QVERIFY(signalIndex != -1); + + auto signal = mo->method(signalIndex); + QVERIFY(signal.isValid()); + QCOMPARE(signal.methodType(), QMetaMethod::Signal); + + QSignalSpy spy(&obj, signal); + QVERIFY(spy.isValid()); + + obj.setObjectName("A new object name"); + QCOMPARE(spy.count(), 1); +} + +Q_DECLARE_METATYPE(QMetaMethod); +void tst_QSignalSpy::spyOnMetaMethod_invalid() +{ + QFETCH(QObject*, object); + QFETCH(QMetaMethod, signal); + + QSignalSpy spy(object, signal); + QVERIFY(!spy.isValid()); +} + +void tst_QSignalSpy::spyOnMetaMethod_invalid_data() +{ + QTest::addColumn<QObject*>("object"); + QTest::addColumn<QMetaMethod>("signal"); + + QTest::addRow("Invalid object") + << static_cast<QObject*>(nullptr) + << QMetaMethod(); + + QTest::addRow("Empty signal") + << new QObject(this) + << QMetaMethod(); + + QTest::addRow("Method is not a signal") + << new QObject(this) + << QObject::staticMetaObject.method(QObject::staticMetaObject.indexOfMethod("deleteLater()")); +} + QTEST_MAIN(tst_QSignalSpy) #include "tst_qsignalspy.moc" |