Use QTRY_VERIFY to test asynchronous behaviour.
authorJason McDonald <jason.mcdonald@nokia.com>
Wed, 7 Dec 2011 03:26:00 +0000 (13:26 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 7 Dec 2011 06:53:26 +0000 (07:53 +0100)
QTRY_VERIFY waits for a condition to become true while regularly
processing events.  There is no need for a custom solution to this
problem.

Change-Id: Ia23e2fb61cdc5c3a3a8a729cd4356ba930fe7cb7
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp

index 84aa8c7..383fcf8 100644 (file)
 #include <QtTest/QtTest>
 #include "private/qapplication_p.h"
 
-// Will try to wait for the condition while allowing event processing
-// for a maximum of 2 seconds.
-#define WAIT_FOR_CONDITION(expr, expected) \
-    do { \
-        const int step = 100; \
-        for (int i = 0; i < 2000 && expr != expected; i+=step) { \
-            QTest::qWait(step); \
-        } \
-    } while(0)
-
 #ifdef QT_BUILD_INTERNAL
 #define VERIFY_SPANS_CONSISTENCY(TEST_VIEW_) \
     QVERIFY(static_cast<QTableViewPrivate*>(QObjectPrivate::get(TEST_VIEW_))->spans.checkConsistency())
@@ -3358,16 +3348,9 @@ void tst_QTableView::tabFocus()
     window.setFocus();
     QTest::qWait(100);
     window.activateWindow();
-    QTest::qWait(100);
-
-    qApp->processEvents();
-
-    WAIT_FOR_CONDITION(window.hasFocus(), true);
-
-    qApp->processEvents();
 
     // window
-    QVERIFY(window.hasFocus());
+    QTRY_VERIFY(window.hasFocus());
     QVERIFY(!view->hasFocus());
     QVERIFY(!edit->hasFocus());