diff options
Diffstat (limited to 'src/testlib/qtestsystem.h')
-rw-r--r-- | src/testlib/qtestsystem.h | 105 |
1 files changed, 4 insertions, 101 deletions
diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h index daa0d7aea0..7a73bbb5d2 100644 --- a/src/testlib/qtestsystem.h +++ b/src/testlib/qtestsystem.h @@ -41,113 +41,16 @@ #define QTESTSYSTEM_H #include <QtTest/qtestcase.h> -#include <QtCore/qcoreapplication.h> -#include <QtCore/qdeadlinetimer.h> -#ifdef QT_GUI_LIB -# include <QtGui/QWindow> -#endif -#ifdef QT_WIDGETS_LIB -# include <QtWidgets/QWidget> -#endif - -QT_BEGIN_NAMESPACE - -namespace QTest -{ - template <typename Functor> - Q_REQUIRED_RESULT static bool qWaitFor(Functor predicate, int timeout = 5000) - { - // We should not spin the event loop in case the predicate is already true, - // otherwise we might send new events that invalidate the predicate. - if (predicate()) - return true; - - // qWait() is expected to spin the event loop, even when called with a small - // timeout like 1ms, so we we can't use a simple while-loop here based on - // the deadline timer not having timed out. Use do-while instead. - - int remaining = timeout; - QDeadlineTimer deadline(remaining, Qt::PreciseTimer); - - do { - QCoreApplication::processEvents(QEventLoop::AllEvents, remaining); - QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); - - remaining = deadline.remainingTime(); - if (remaining > 0) { - QTest::qSleep(qMin(10, remaining)); - remaining = deadline.remainingTime(); - } - - if (predicate()) - return true; - - remaining = deadline.remainingTime(); - } while (remaining > 0); - - return predicate(); // Last chance - } - - Q_DECL_UNUSED inline static void qWait(int ms) - { - // Ideally this method would be implemented in terms of qWaitFor, with - // a predicate that always returns false, but due to a compiler bug in - // GCC 6 we can't do that. - - Q_ASSERT(QCoreApplication::instance()); - - QDeadlineTimer timer(ms, Qt::PreciseTimer); - int remaining = ms; - do { - QCoreApplication::processEvents(QEventLoop::AllEvents, remaining); - QCoreApplication::sendPostedEvents(Q_NULLPTR, QEvent::DeferredDelete); - remaining = timer.remainingTime(); - if (remaining <= 0) - break; - QTest::qSleep(qMin(10, remaining)); - remaining = timer.remainingTime(); - } while (remaining > 0); - } +#include <QtCore/qtestsupport_core.h> #ifdef QT_GUI_LIB - Q_REQUIRED_RESULT inline static bool qWaitForWindowActive(QWindow *window, int timeout = 5000) - { - return qWaitFor([&]() { return window->isActive(); }, timeout); - } - - Q_REQUIRED_RESULT inline static bool qWaitForWindowExposed(QWindow *window, int timeout = 5000) - { - return qWaitFor([&]() { return window->isExposed(); }, timeout); - } +# include <QtGui/qtestsupport_gui.h> #endif - #ifdef QT_WIDGETS_LIB - Q_REQUIRED_RESULT inline static bool qWaitForWindowActive(QWidget *widget, int timeout = 5000) - { - if (QWindow *window = widget->window()->windowHandle()) - return qWaitForWindowActive(window, timeout); - return false; - } - - Q_REQUIRED_RESULT inline static bool qWaitForWindowExposed(QWidget *widget, int timeout = 5000) - { - if (QWindow *window = widget->window()->windowHandle()) - return qWaitForWindowExposed(window, timeout); - return false; - } +# include <QtWidgets/qtestsupport_widgets.h> #endif -#if QT_DEPRECATED_SINCE(5, 0) -# ifdef QT_WIDGETS_LIB - - QT_DEPRECATED Q_REQUIRED_RESULT inline static bool qWaitForWindowShown(QWidget *widget, int timeout = 5000) - { - return qWaitForWindowExposed(widget, timeout); - } -# endif // QT_WIDGETS_LIB -#endif // QT_DEPRECATED_SINCE(5, 0) -} - +QT_BEGIN_NAMESPACE QT_END_NAMESPACE #endif |