summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2014-03-04 15:20:07 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-29 12:40:05 +0100
commitde10bf4955fda698e87bbbfee4461554a2fa876a (patch)
treeace59813e509f69cd925acd27c63deb98a585b38 /tests
parentecdeaa436929e7fe8ebf6063bfb83ba2c4e9383a (diff)
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 <Friedemann.Kleint@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-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)