From 358c14821bf907025c1b3db6ff3f8e3bd3cdbb0f Mon Sep 17 00:00:00 2001 From: "Bradley T. Hughes" Date: Mon, 23 Jan 2012 08:52:13 +0100 Subject: [PATCH] Run tst_QEventDispatcher with the GUI event dispatchers as well Since some GUI event dispatchers are complete reimplementations and do not build on the corelib ones, we want to run the same tests with the other dispatcher. Since this is a GUI test now, we need to make sure to drain system events queued during application startup to make sure we can reliably run the test functions. Change-Id: I4905db70bc8f8584c4ef1f4d767824040281452c Reviewed-by: Robin Burchell --- .../qeventdispatcher/tst_qeventdispatcher.cpp | 17 ++++++++++++++++- tests/auto/gui/kernel/kernel.pro | 1 + .../qguieventdispatcher/qguieventdispatcher.pro | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/auto/gui/kernel/qguieventdispatcher/qguieventdispatcher.pro diff --git a/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp b/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp index 07bd73f0d7..d06912ee91 100644 --- a/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp +++ b/tests/auto/corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp @@ -39,7 +39,11 @@ ** ****************************************************************************/ -#include +#ifdef QT_GUI_LIB +# include +#else +# include +#endif #include enum { @@ -68,6 +72,7 @@ public: { } private slots: + void initTestCase(); void registerTimer(); /* void registerSocketNotifier(); */ // Not implemented here, see tst_QSocketNotifier instead /* void registerEventNotifiier(); */ // Not implemented here, see tst_QWinEventNotifier instead @@ -88,6 +93,16 @@ bool tst_QEventDispatcher::event(QEvent *e) return QObject::event(e); } +// drain the system event queue after the test starts to avoid destabilizing the test functions +void tst_QEventDispatcher::initTestCase() +{ + QElapsedTimer elapsedTimer; + elapsedTimer.start(); + while (!elapsedTimer.hasExpired(CoarseTimerInterval) && eventDispatcher->processEvents(QEventLoop::AllEvents)) { + ; + } +} + // test that the eventDispatcher's timer implementation is complete and working void tst_QEventDispatcher::registerTimer() { diff --git a/tests/auto/gui/kernel/kernel.pro b/tests/auto/gui/kernel/kernel.pro index 1adae128cf..116e9dd1f1 100644 --- a/tests/auto/gui/kernel/kernel.pro +++ b/tests/auto/gui/kernel/kernel.pro @@ -4,6 +4,7 @@ SUBDIRS=\ qdrag \ qevent \ qfileopenevent \ + qguieventdispatcher \ qguimetatype \ qguivariant \ qinputmethod \ diff --git a/tests/auto/gui/kernel/qguieventdispatcher/qguieventdispatcher.pro b/tests/auto/gui/kernel/qguieventdispatcher/qguieventdispatcher.pro new file mode 100644 index 0000000000..3057037e74 --- /dev/null +++ b/tests/auto/gui/kernel/qguieventdispatcher/qguieventdispatcher.pro @@ -0,0 +1,4 @@ +CONFIG += testcase +TARGET = tst_qguieventdispatcher +QT = core gui testlib +SOURCES += ../../../corelib/kernel/qeventdispatcher/tst_qeventdispatcher.cpp