summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/kernel')
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp55
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h3
-rw-r--r--tests/auto/corelib/kernel/qeventloop/qeventloop.pro2
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro2
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp7
5 files changed, 66 insertions, 3 deletions
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 924db17c04..efecf31d66 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2015 Intel Corporation.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -60,6 +61,23 @@ public:
}
};
+class ThreadedEventReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ QList<int> recordedEvents;
+ bool event(QEvent *event) Q_DECL_OVERRIDE
+ {
+ if (event->type() != QEvent::Type(QEvent::User + 1))
+ return QObject::event(event);
+ recordedEvents.append(event->type());
+ QThread::currentThread()->quit();
+ QCoreApplication::quit();
+ moveToThread(0);
+ return true;
+ }
+};
+
void tst_QCoreApplication::sendEventsOnProcessEvents()
{
int argc = 1;
@@ -797,6 +815,43 @@ void tst_QCoreApplication::QTBUG31606_QEventDestructorDeadLock()
QVERIFY(spy.recordedEvents.contains(QEvent::User + 2));
}
+// this is almost identical to sendEventsOnProcessEvents
+void tst_QCoreApplication::applicationEventFilters_mainThread()
+{
+ int argc = 1;
+ char *argv[] = { const_cast<char*>(QTest::currentAppName()) };
+ TestApplication app(argc, argv);
+
+ EventSpy spy;
+ app.installEventFilter(&spy);
+
+ QCoreApplication::postEvent(&app, new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTimer::singleShot(10, &app, SLOT(quit()));
+ app.exec();
+ QVERIFY(spy.recordedEvents.contains(QEvent::User + 1));
+}
+
+void tst_QCoreApplication::applicationEventFilters_auxThread()
+{
+ int argc = 1;
+ char *argv[] = { const_cast<char*>(QTest::currentAppName()) };
+ TestApplication app(argc, argv);
+ QThread thread;
+ ThreadedEventReceiver receiver;
+ receiver.moveToThread(&thread);
+
+ EventSpy spy;
+ app.installEventFilter(&spy);
+
+ // this is very similar to sendEventsOnProcessEvents
+ QCoreApplication::postEvent(&receiver, new QEvent(QEvent::Type(QEvent::User + 1)));
+ QTimer::singleShot(1000, &app, SLOT(quit()));
+ thread.start();
+ app.exec();
+ QVERIFY(thread.wait(1000));
+ QVERIFY(receiver.recordedEvents.contains(QEvent::User + 1));
+ QVERIFY(!spy.recordedEvents.contains(QEvent::User + 1));
+}
static void createQObjectOnDestruction()
{
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
index 3dd84482d7..09e15723ac 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
+** Copyright (C) 2015 Intel Corporation.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
@@ -58,6 +59,8 @@ private slots:
void customEventDispatcher();
void testQuitLock();
void QTBUG31606_QEventDestructorDeadLock();
+ void applicationEventFilters_mainThread();
+ void applicationEventFilters_auxThread();
};
#endif // TST_QCOREAPPLICATION_H
diff --git a/tests/auto/corelib/kernel/qeventloop/qeventloop.pro b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
index 5593aa2430..ea4792fc1c 100644
--- a/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
+++ b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
@@ -4,7 +4,7 @@ TARGET = tst_qeventloop
QT = core network testlib core-private
SOURCES = $$PWD/tst_qeventloop.cpp
-win32:!wince*:!winrt:LIBS += -luser32
+win32:!wince:!winrt: LIBS += -luser32
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
contains(QT_CONFIG, glib): DEFINES += HAVE_GLIB
diff --git a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro
index 8823d54590..b08dfb1838 100644
--- a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro
+++ b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro
@@ -2,7 +2,7 @@ CONFIG -= app_bundle debug_and_release
CONFIG += console
DESTDIR = ./
QT = core
-wince*: {
+wince {
LIBS += coredll.lib
}
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 3ec84b5198..4617ce5e74 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -918,6 +918,8 @@ void tst_QObject::connectDisconnectNotifyPMF()
QMetaObject::Connection conn = connect((SenderObject*)s, &SenderObject::signal1,
(ReceiverObject*)r, &ReceiverObject::slot1);
+ QVERIFY(conn);
+
// Test disconnectNotify when disconnecting by QMetaObject::Connection
QVERIFY(QObject::disconnect(conn));
// disconnectNotify() is not called, but it probably should be.
@@ -5751,7 +5753,6 @@ void tst_QObject::connectFunctorWithContext()
{
int status = 1;
SenderObject obj;
- QMetaObject::Connection handle;
ContextObject *context = new ContextObject;
QEventLoop e;
@@ -6058,8 +6059,12 @@ void tst_QObject::disconnectDoesNotLeakFunctor()
QVERIFY(c2);
QCOMPARE(countedStructObjectsCount, 2);
QVERIFY(QObject::disconnect(c1));
+ QVERIFY(!c1);
+ QVERIFY(!c2);
// functor object has been destroyed
QCOMPARE(countedStructObjectsCount, 1);
+ QVERIFY(!QObject::disconnect(c2));
+ QCOMPARE(countedStructObjectsCount, 1);
}
QCOMPARE(countedStructObjectsCount, 0);
}