diff options
author | David Faure <faure@kde.org> | 2012-07-14 01:37:53 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-25 13:31:14 +0200 |
commit | 790aca0ea1bbd33a8ff29c83c0ab0bd968304f03 (patch) | |
tree | d8b708fe722a72baeb040630160081532e19cf10 /src/testlib/qsignalspy.h | |
parent | 3a27d4b480214072d972ac67561f2ee4010f8baa (diff) |
Add QSignalSpy::wait() method.
Change-Id: I1f3b49e3dee19bf0b1d2933c6e6ad7972186e0d0
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
Diffstat (limited to 'src/testlib/qsignalspy.h')
-rw-r--r-- | src/testlib/qsignalspy.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h index 70944baadf..18def8f6c4 100644 --- a/src/testlib/qsignalspy.h +++ b/src/testlib/qsignalspy.h @@ -47,6 +47,7 @@ #include <QtCore/qobject.h> #include <QtCore/qmetaobject.h> #include <QtCore/qvariant.h> +#include <QtTest/qtesteventloop.h> QT_BEGIN_HEADER @@ -59,6 +60,7 @@ class QSignalSpy: public QObject, public QList<QList<QVariant> > { public: QSignalSpy(QObject *obj, const char *aSignal) + : m_waiting(false) { #ifdef Q_CC_BOR const int memberOffset = QObject::staticMetaObject.methodCount(); @@ -100,6 +102,15 @@ public: inline bool isValid() const { return !sig.isEmpty(); } inline QByteArray signal() const { return sig; } + bool wait(int timeout = 5000) + { + Q_ASSERT(!m_waiting); + const int origCount = count(); + m_waiting = true; + m_loop.enterLoopMSecs(timeout); + m_waiting = false; + return count() > origCount; + } int qt_metacall(QMetaObject::Call call, int methodId, void **a) { @@ -139,12 +150,18 @@ private: list << QVariant(type, a[i + 1]); } append(list); + + if (m_waiting) + m_loop.exitLoop(); } // the full, normalized signal name QByteArray sig; // holds the QMetaType types for the argument list of the signal QList<int> args; + + QTestEventLoop m_loop; + bool m_waiting; }; QT_END_NAMESPACE |