From de10bf4955fda698e87bbbfee4461554a2fa876a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 4 Mar 2014 15:20:07 +0100 Subject: QEvent: document and check when registerEventTypes() returns -1 In tst_QEvent, add a check that exhausts the available event type ids and verifies that registerEventTypes() returns -1 in that case, as documented. I haven't found a way to test the other case in which -1 is returned. Since this test operates on a global write-only registry the new test case needs to keep track of whether the earlier test cases have run successfully. If they didn't, skip this test case. Change-Id: I68ea9d17d10dcec22175994aba269dd09c9adf43 Reviewed-by: Friedemann Kleint Reviewed-by: Thiago Macieira --- tests/auto/gui/kernel/qevent/tst_qevent.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests') 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) -- cgit v1.2.3