diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/gui/kernel/qevent/tst_qevent.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/gui/kernel/qevent/tst_qevent.cpp b/tests/auto/gui/kernel/qevent/tst_qevent.cpp index 46025e444d..73f9486752 100644 --- a/tests/auto/gui/kernel/qevent/tst_qevent.cpp +++ b/tests/auto/gui/kernel/qevent/tst_qevent.cpp @@ -55,9 +55,14 @@ public: private slots: void registerEventType_data(); void registerEventType(); + void exhaustEventTypeRegistration(); // keep behind registerEventType() test + +private: + bool registerEventTypeSucceeded; // track success of registerEventType for use by exhaustEventTypeRegistration() }; tst_QEvent::tst_QEvent() + : registerEventTypeSucceeded(true) { } tst_QEvent::~tst_QEvent() @@ -82,9 +87,30 @@ void tst_QEvent::registerEventType_data() void tst_QEvent::registerEventType() { + const bool oldRegisterEventTypeSucceeded = registerEventTypeSucceeded; + registerEventTypeSucceeded = false; QFETCH(int, hint); QFETCH(int, expected); QCOMPARE(QEvent::registerEventType(hint), expected); + registerEventTypeSucceeded = oldRegisterEventTypeSucceeded; +} + +void tst_QEvent::exhaustEventTypeRegistration() +{ + if (!registerEventTypeSucceeded) + QSKIP("requires the previous test (registerEventType) to have finished successfully"); + + int i = QEvent::User; + int result; + while ((result = QEvent::registerEventType(i)) == i) + ++i; + QCOMPARE(i, int(QEvent::User + 1000)); + QCOMPARE(result, int(QEvent::MaxUser - 4)); + i = QEvent::User + 1001; + while ((result = QEvent::registerEventType(i)) == i) + ++i; + QCOMPARE(result, -1); + QCOMPARE(i, int(QEvent::MaxUser - 4)); } QTEST_MAIN(tst_QEvent) |