diff options
-rw-r--r-- | src/testlib/qtestaccessible.h | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h index e039cd3998..67b792d78a 100644 --- a/src/testlib/qtestaccessible.h +++ b/src/testlib/qtestaccessible.h @@ -53,6 +53,7 @@ QVERIFY(QTestAccessibility::verifyEvent(event)) #include <QtCore/qlist.h> +#include <QtCore/qdebug.h> #include <QtGui/qaccessible.h> #include <QtGui/qguiapplication.h> @@ -137,11 +138,17 @@ public: static EventList events() { return eventList(); } static bool verifyEvent(QAccessibleEvent *ev) { - if (eventList().isEmpty()) + for (int i = 0; eventList().isEmpty() && i < 5; ++i) + QTest::qWait(50); + if (eventList().isEmpty()) { + qWarning("%s: Timeout waiting for accessibility event.", Q_FUNC_INFO); return false; - QAccessibleEvent *first = eventList().takeFirst(); - bool res = *first == *ev; - delete first; + } + const bool res = *eventList().first() == *ev; + if (!res) + qWarning("%s: %s", Q_FUNC_INFO, + qPrintable(msgAccessibilityEventListMismatch(eventList(), ev))); + delete eventList().takeFirst(); return res; } static bool containsEvent(QAccessibleEvent *event) { @@ -229,6 +236,22 @@ private: static QTestAccessibility *ta = 0; return ta; } + +private: + static QString msgAccessibilityEventListMismatch(const EventList &haystack, + const QAccessibleEvent *needle) + { + QString rc; + QDebug str = QDebug(&rc).nospace(); + str << "Event " << needle->object() << ", type: " + << needle->type() << ", child: " << needle->child() + << " not found at head of event list of size " << haystack.size() << " :"; + foreach (const QAccessibleEvent *e, haystack) + str << ' ' << e->object() << ", type: " + << e->type() << ", child: " << e->child(); + return rc; + } + }; #endif |