Use QTRY_VERIFY to test asynchronous behaviour.

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>
bb10
Jason McDonald 2011-12-07 13:30:37 +10:00 committed by Qt by Nokia
parent 7fcc55034c
commit b989444f35
1 changed files with 2 additions and 23 deletions

View 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);