summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-06-27 18:53:44 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-06-27 18:53:44 (GMT)
commit3c67a14ad0db0e83e70b2432394f168ce279518b (patch)
tree77ba4c394f39886b21da6645723ebde9253788f2 /tests
parentb39dc4a9029040f43f1ca3ace6bf7e77740a3f39 (diff)
parent007f01a7e801d5409708e4b8de8b3ead1481cf7d (diff)
downloadQt-3c67a14ad0db0e83e70b2432394f168ce279518b.zip
Qt-3c67a14ad0db0e83e70b2432394f168ce279518b.tar.gz
Qt-3c67a14ad0db0e83e70b2432394f168ce279518b.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging: Make it compile with openssl 1.0.0d, gcc 4.6 QStringBuilder: do not crash with null char* Fix event delevery order QSocketNotifier autotest - fix compile with MSVC
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp75
-rw-r--r--tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp2
-rw-r--r--tests/auto/qstringbuilder1/stringbuilder.cpp12
3 files changed, 88 insertions, 1 deletions
diff --git a/tests/auto/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp
index 7a8c441..bcc205e 100644
--- a/tests/auto/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/qeventloop/tst_qeventloop.cpp
@@ -59,6 +59,8 @@
#include <unistd.h>
#endif
+#include "../../shared/util.h"
+
//TESTED_CLASS=
//TESTED_FILES=
@@ -208,6 +210,7 @@ private slots:
void quit();
void processEventsExcludeSocket();
void processEventsExcludeTimers();
+ void deliverInDefinedOrder_QTBUG19637();
// keep this test last:
void nestedLoops();
@@ -842,5 +845,77 @@ void tst_QEventLoop::symbianNestedActiveSchedulerLoop()
#endif
}
+Q_DECLARE_METATYPE(QThread*)
+
+namespace DeliverInDefinedOrder_QTBUG19637 {
+ enum { NbThread = 3, NbObject = 500, NbEventQueue = 5, NbEvent = 50 };
+
+ struct CustomEvent : public QEvent {
+ CustomEvent(int q, int v) : QEvent(Type(User + q)), value(v) {}
+ int value;
+ };
+
+ struct Object : public QObject {
+ Q_OBJECT
+ public:
+ Object() : count(0) {
+ for (int i = 0; i < NbEventQueue; i++)
+ lastReceived[i] = -1;
+ }
+ int lastReceived[NbEventQueue];
+ int count;
+ virtual void customEvent(QEvent* e) {
+ QVERIFY(e->type() >= QEvent::User);
+ QVERIFY(e->type() < QEvent::User + 5);
+ uint idx = e->type() - QEvent::User;
+ int value = static_cast<CustomEvent *>(e)->value;
+ QVERIFY(lastReceived[idx] < value);
+ lastReceived[idx] = value;
+ count++;
+ }
+
+ public slots:
+ void moveToThread(QThread *t) {
+ QObject::moveToThread(t);
+ }
+ };
+
+}
+
+void tst_QEventLoop::deliverInDefinedOrder_QTBUG19637()
+{
+ using namespace DeliverInDefinedOrder_QTBUG19637;
+ qMetaTypeId<QThread*>();
+ QThread threads[NbThread];
+ Object objects[NbObject];
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].start();
+ }
+
+ int event = 0;
+
+ for (int o = 0; o < NbObject; o++) {
+ objects[o].moveToThread(&threads[o % NbThread]);
+ for (int e = 0; e < NbEvent; e++) {
+ int q = e % NbEventQueue;
+ QCoreApplication::postEvent(&objects[o], new CustomEvent(q, ++event) , q);
+ if (e % 7)
+ QMetaObject::invokeMethod(&objects[o], "moveToThread", Qt::QueuedConnection, Q_ARG(QThread*, &threads[(e+o)%NbThread]));
+ }
+ }
+
+ QTest::qWait(30);
+ for (int o = 0; o < NbObject; o++) {
+ QTRY_COMPARE(objects[o].count, int(NbEvent));
+ }
+
+ for (int t = 0; t < NbThread; t++) {
+ threads[t].quit();
+ threads[t].wait();
+ }
+
+}
+
+
QTEST_MAIN(tst_QEventLoop)
#include "tst_qeventloop.moc"
diff --git a/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp b/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp
index eb9a260..46bdb81 100644
--- a/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp
+++ b/tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp
@@ -55,9 +55,9 @@
#endif
#ifdef Q_OS_UNIX
#include <private/qnet_unix_p.h>
+#include <sys/select.h>
#endif
#include <limits>
-#include <sys/select.h>
class tst_QSocketNotifier : public QObject
{
diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/qstringbuilder1/stringbuilder.cpp
index 2327ef5..de7ad65 100644
--- a/tests/auto/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/qstringbuilder1/stringbuilder.cpp
@@ -133,6 +133,12 @@ void runScenario()
QCOMPARE(r, string);
r = string P ba;
QCOMPARE(r, string);
+
+ const char *zero = 0;
+ r = string P zero;
+ QCOMPARE(r, string);
+ r = zero P string;
+ QCOMPARE(r, string);
#endif
string = QString::fromLatin1(LITERAL);
@@ -161,6 +167,12 @@ void runScenario()
QCOMPARE(r, r2);
r2 = QByteArray("hello\0") P UTF8_LITERAL;
QCOMPARE(r, r2);
+
+ const char *zero = 0;
+ r = ba P zero;
+ QCOMPARE(r, ba);
+ r = zero P ba;
+ QCOMPARE(r, ba);
}
//operator QString +=