Use QTRY_VERIFY to test asynchronous behaviour.
authorJason McDonald <jason.mcdonald@nokia.com>
Wed, 7 Dec 2011 03:30:37 +0000 (13:30 +1000)
committerQt by Nokia <qt-info@nokia.com>
Wed, 7 Dec 2011 06:53:30 +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: Ia65c90cbdb165b543f5c78f9bac3cfadd77dfb3f
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp

index cc3fd85..bf547cc 100644 (file)
@@ -60,16 +60,6 @@ Q_DECLARE_METATYPE(IntList)
 typedef QList<bool> BoolList;
 Q_DECLARE_METATYPE(BoolList)
 
-// 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)
-
 class protected_QHeaderView : public QHeaderView
 {
     Q_OBJECT
@@ -1447,23 +1437,12 @@ void tst_QHeaderView::focusPolicy()
     QApplication::setActiveWindow(&widget);
     QTest::qWaitForWindowShown(&widget);
     widget.activateWindow();
-    QTest::qWait(100);
-
-    qApp->processEvents();
-
-    WAIT_FOR_CONDITION(widget.hasFocus(), true);
-
-    QVERIFY(widget.hasFocus());
+    QTRY_VERIFY(widget.hasFocus());
     QVERIFY(!widget.header()->hasFocus());
 
     widget.setFocusPolicy(Qt::NoFocus);
     widget.clearFocus();
-
-    qApp->processEvents();
-    qApp->processEvents();
-
-    WAIT_FOR_CONDITION(widget.hasFocus(), false);
-    QVERIFY(!widget.hasFocus());
+    QTRY_VERIFY(!widget.hasFocus());
     QVERIFY(!widget.header()->hasFocus());
 
     QTest::keyPress(&widget, Qt::Key_Tab);