summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/gui/kernel/qevent/tst_qevent.cpp26
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)