diff options
Diffstat (limited to 'tests/auto/corelib/kernel')
36 files changed, 229 insertions, 168 deletions
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp index 5e9dbdd226..a53501b9dd 100644 --- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp +++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp @@ -415,7 +415,7 @@ void tst_QCoreApplication::removePostedEvents() expected.clear(); } -#ifndef QT_NO_THREAD +#if QT_CONFIG(thread) class DeliverInDefinedOrderThread : public QThread { Q_OBJECT @@ -532,7 +532,7 @@ void tst_QCoreApplication::deliverInDefinedOrder() QObject::connect(&obj, SIGNAL(done()), &app, SLOT(quit())); app.exec(); } -#endif // QT_NO_QTHREAD +#endif // QT_CONFIG(thread) void tst_QCoreApplication::applicationPid() { diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h index b6c20a915f..105cca5174 100644 --- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h +++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h @@ -43,7 +43,7 @@ private slots: void argc(); void postEvent(); void removePostedEvents(); -#ifndef QT_NO_THREAD +#if QT_CONFIG(thread) void deliverInDefinedOrder(); #endif void applicationPid(); diff --git a/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST b/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST index 4cd3c2f0c8..4dd71ca9f4 100644 --- a/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST +++ b/tests/auto/corelib/kernel/qelapsedtimer/BLACKLIST @@ -1,3 +1,4 @@ [elapsed] windows osx-10.12 +osx-10.13 diff --git a/tests/auto/corelib/kernel/qeventdispatcher/BLACKLIST b/tests/auto/corelib/kernel/qeventdispatcher/BLACKLIST index 402d87b82f..fb7e025b7c 100644 --- a/tests/auto/corelib/kernel/qeventdispatcher/BLACKLIST +++ b/tests/auto/corelib/kernel/qeventdispatcher/BLACKLIST @@ -4,3 +4,4 @@ osx [registerTimer] windows osx +winrt diff --git a/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp b/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp index e4aa8b80c0..bb111a9137 100644 --- a/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp +++ b/tests/auto/corelib/kernel/qmetaenum/tst_qmetaenum.cpp @@ -37,7 +37,10 @@ class tst_QMetaEnum : public QObject Q_OBJECT public: enum SuperEnum { SuperValue1 = 1 , SuperValue2 = 2 }; + enum Flag { Flag1 = 1 , Flag2 = 2 }; + Q_DECLARE_FLAGS(Flags, Flag) Q_ENUM(SuperEnum) + Q_FLAG(Flags) private slots: void fromType(); @@ -49,7 +52,17 @@ void tst_QMetaEnum::fromType() { QMetaEnum meta = QMetaEnum::fromType<SuperEnum>(); QVERIFY(meta.isValid()); + QVERIFY(!meta.isFlag()); QCOMPARE(meta.name(), "SuperEnum"); + QCOMPARE(meta.enumName(), "SuperEnum"); + QCOMPARE(meta.enclosingMetaObject(), &staticMetaObject); + QCOMPARE(meta.keyCount(), 2); + + meta = QMetaEnum::fromType<Flags>(); + QVERIFY(meta.isValid()); + QVERIFY(meta.isFlag()); + QCOMPARE(meta.name(), "Flags"); + QCOMPARE(meta.enumName(), "Flag"); QCOMPARE(meta.enclosingMetaObject(), &staticMetaObject); QCOMPARE(meta.keyCount(), 2); } diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp index 431a9ebdea..9855bec520 100644 --- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp @@ -54,6 +54,11 @@ namespace MyNamespace { MyEnum2, MyEnum3 }; + enum class MyScopedEnum { + Enum1, + Enum2, + Enum3 + }; enum MyAnotherEnum { MyAnotherEnum1 = 1, MyAnotherEnum2 = 2, @@ -64,7 +69,13 @@ namespace MyNamespace { MyFlag2 = 0x02, MyFlag3 = 0x04 }; + enum class MyScopedFlag { + MyFlag1 = 0x10, + MyFlag2 = 0x20, + MyFlag3 = 0x40 + }; Q_DECLARE_FLAGS(MyFlags, MyFlag) + Q_DECLARE_FLAGS(MyScopedFlags, MyScopedFlag) MyEnum myEnum() const { return m_enum; } void setMyEnum(MyEnum val) { m_enum = val; } @@ -79,8 +90,10 @@ namespace MyNamespace { { } private: Q_ENUM(MyEnum) + Q_ENUM(MyScopedEnum) Q_ENUM(MyAnotherEnum) Q_FLAG(MyFlags) + Q_FLAG(MyScopedFlags) MyEnum m_enum; MyFlags m_flags; @@ -1730,20 +1743,35 @@ void tst_QMetaObject::signalIndex() void tst_QMetaObject::enumDebugStream() { - QTest::ignoreMessage(QtDebugMsg, "hello MyNamespace::MyClass::MyEnum(MyEnum2) world "); - MyNamespace::MyClass::MyEnum e = MyNamespace::MyClass::MyEnum2; - qDebug() << "hello" << e << "world"; + QTest::ignoreMessage(QtDebugMsg, "hello MyNamespace::MyClass::MyEnum2 world "); + qDebug() << "hello" << MyNamespace::MyClass::MyEnum2 << "world"; + + QTest::ignoreMessage(QtDebugMsg, "hello MyNamespace::MyClass::MyScopedEnum::Enum3 scoped world "); + qDebug() << "hello" << MyNamespace::MyClass::MyScopedEnum::Enum3 << "scoped world"; - QTest::ignoreMessage(QtDebugMsg, "Qt::WindowType(WindowTitleHint) Qt::WindowType(Window) Qt::WindowType(Desktop) Qt::WindowType(WindowSystemMenuHint)"); - qDebug() << Qt::WindowTitleHint << Qt::Window <<Qt::Desktop << Qt::WindowSystemMenuHint; + QTest::ignoreMessage(QtDebugMsg, "Qt::WindowTitleHint Qt::Window Qt::Desktop Qt::WindowSystemMenuHint"); + qDebug() << Qt::WindowTitleHint << Qt::Window << Qt::Desktop << Qt::WindowSystemMenuHint; - QTest::ignoreMessage(QtDebugMsg, "hello QFlags<MyNamespace::MyClass::MyFlags>(MyFlag1) world"); + QTest::ignoreMessage(QtDebugMsg, "hello QFlags<MyNamespace::MyClass::MyFlag>(MyFlag1) world"); MyNamespace::MyClass::MyFlags f1 = MyNamespace::MyClass::MyFlag1; qDebug() << "hello" << f1 << "world"; MyNamespace::MyClass::MyFlags f2 = MyNamespace::MyClass::MyFlag2 | MyNamespace::MyClass::MyFlag3; - QTest::ignoreMessage(QtDebugMsg, "QFlags<MyNamespace::MyClass::MyFlags>(MyFlag1) QFlags<MyNamespace::MyClass::MyFlags>(MyFlag2|MyFlag3)"); + QTest::ignoreMessage(QtDebugMsg, "QFlags<MyNamespace::MyClass::MyFlag>(MyFlag1) QFlags<MyNamespace::MyClass::MyFlag>(MyFlag2|MyFlag3)"); qDebug() << f1 << f2; + + QTest::ignoreMessage(QtDebugMsg, "QFlags<MyNamespace::MyClass::MyScopedFlag>(MyFlag2)"); + MyNamespace::MyClass::MyScopedFlags f3 = MyNamespace::MyClass::MyScopedFlag::MyFlag2; + qDebug() << f3; + + QTest::ignoreMessage(QtDebugMsg, "QFlags<MyNamespace::MyClass::MyScopedFlag>(MyFlag2|MyFlag3)"); + f3 |= MyNamespace::MyClass::MyScopedFlag::MyFlag3; + qDebug() << f3; + + // Single flag recognized as enum: + QTest::ignoreMessage(QtDebugMsg, "MyNamespace::MyClass::MyFlag1"); + MyNamespace::MyClass::MyFlag f4 = MyNamespace::MyClass::MyFlag1; + qDebug() << f4; } void tst_QMetaObject::inherits_data() diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp index 6bb031e357..56623773a2 100644 --- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp +++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp @@ -830,6 +830,7 @@ void tst_QMetaObjectBuilder::enumerator() // Modify the attributes on enum1. enum1.setIsFlag(true); enum1.setIsScoped(true); + enum1.setEnumName(QByteArrayLiteral("fooFlag")); QCOMPARE(enum1.addKey("ABC", 0), 0); QCOMPARE(enum1.addKey("DEF", 1), 1); QCOMPARE(enum1.addKey("GHI", -1), 2); @@ -838,6 +839,7 @@ void tst_QMetaObjectBuilder::enumerator() QCOMPARE(enum1.name(), QByteArray("foo")); QVERIFY(enum1.isFlag()); QVERIFY(enum1.isScoped()); + QCOMPARE(enum1.enumName(), QByteArray("fooFlag")); QCOMPARE(enum1.keyCount(), 3); QCOMPARE(enum1.index(), 0); QCOMPARE(enum1.key(0), QByteArray("ABC")); diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index e312199980..73618db3f4 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -1574,6 +1574,9 @@ DECLARE_NONSTREAMABLE(QJsonValue) DECLARE_NONSTREAMABLE(QJsonObject) DECLARE_NONSTREAMABLE(QJsonArray) DECLARE_NONSTREAMABLE(QJsonDocument) +DECLARE_NONSTREAMABLE(QCborValue) +DECLARE_NONSTREAMABLE(QCborArray) +DECLARE_NONSTREAMABLE(QCborMap) DECLARE_NONSTREAMABLE(QObject*) DECLARE_NONSTREAMABLE(QWidget*) diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.h b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.h index 93ff33bb67..6bda9638f7 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.h +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.h @@ -273,6 +273,24 @@ template<> struct TestValueFactory<QMetaType::QJsonDocument> { ); } }; + +template<> struct TestValueFactory<QMetaType::QCborSimpleType> { + static QCborSimpleType *create() { return new QCborSimpleType(QCborSimpleType::True); } +}; +template<> struct TestValueFactory<QMetaType::QCborValue> { + static QCborValue *create() { return new QCborValue(123.); } +}; +template<> struct TestValueFactory<QMetaType::QCborMap> { + static QCborMap *create() { + return new QCborMap{{0, 0}, {"Hello", 1}, {1, nullptr}}; + } +}; +template<> struct TestValueFactory<QMetaType::QCborArray> { + static QCborArray *create() { + return new QCborArray{0, 1, -2, 2.5, false, nullptr, "Hello", QByteArray("World") }; + } +}; + template<> struct TestValueFactory<QMetaType::QVariant> { static QVariant *create() { return new QVariant(QStringList(QStringList() << "Q" << "t")); } }; diff --git a/tests/auto/corelib/kernel/qobject/.gitignore b/tests/auto/corelib/kernel/qobject/.gitignore index 7970e32c8f..d609065333 100644 --- a/tests/auto/corelib/kernel/qobject/.gitignore +++ b/tests/auto/corelib/kernel/qobject/.gitignore @@ -1,3 +1,7 @@ tst_qobject -signalbug/signalbug -signalbug/signalbug.exe +signalbug_helper +signalbug_helper.exe +debug/signalbug_helper +release/signalbug_helper +debug/signalbug_helper.exe +release/signalbug_helper.exe diff --git a/tests/auto/corelib/kernel/qobject/qobject.pro b/tests/auto/corelib/kernel/qobject/qobject.pro index 978aab86c1..75ad7b5f14 100644 --- a/tests/auto/corelib/kernel/qobject/qobject.pro +++ b/tests/auto/corelib/kernel/qobject/qobject.pro @@ -1,8 +1,4 @@ TEMPLATE = subdirs -!winrt { - test.depends = signalbug - SUBDIRS += signalbug -} - -SUBDIRS += test +SUBDIRS += test.pro +!winrt: SUBDIRS += signalbug diff --git a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro index cc51b4c661..d21b3a62a9 100644 --- a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro +++ b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.pro @@ -1,11 +1,6 @@ -CONFIG -= app_bundle debug_and_release -CONFIG += console -DESTDIR = ./ QT = core HEADERS += signalbug.h SOURCES += signalbug.cpp -# This app is testdata for tst_qobject -target.path = $$[QT_INSTALL_TESTS]/tst_qobject/$$TARGET -INSTALLS += target +load(qt_test_helper) diff --git a/tests/auto/corelib/kernel/qobject/test/test.pro b/tests/auto/corelib/kernel/qobject/test.pro index 4e77cb48c5..af5203e152 100644 --- a/tests/auto/corelib/kernel/qobject/test/test.pro +++ b/tests/auto/corelib/kernel/qobject/test.pro @@ -1,10 +1,10 @@ CONFIG += testcase console -TARGET = ../tst_qobject + QT = core-private network testlib -SOURCES = ../tst_qobject.cpp +TARGET = tst_qobject +SOURCES = tst_qobject.cpp # Force C++17 if available (needed due to P0012R1) contains(QT_CONFIG, c++1z): CONFIG += c++1z -!winrt: TEST_HELPER_INSTALLS = ../signalbug/signalbug DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp index ec57522f48..68c6ece583 100644 --- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp +++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp @@ -55,7 +55,6 @@ class tst_QObject : public QObject { Q_OBJECT private slots: - void initTestCase(); void disconnect(); void connectSlotsByName(); void connectSignalsToSignalsWithDefaultArguments(); @@ -145,6 +144,7 @@ private slots: void disconnectDoesNotLeakFunctor(); void contextDoesNotLeakFunctor(); void connectBase(); + void connectWarnings(); void qmlConnect(); void exceptions(); void noDeclarativeParentChangedOnDestruction(); @@ -282,14 +282,6 @@ static void playWithObjects() } } -void tst_QObject::initTestCase() -{ -#if QT_CONFIG(process) - const QString testDataDir = QFileInfo(QFINDTESTDATA("signalbug")).absolutePath(); - QVERIFY2(QDir::setCurrent(testDataDir), qPrintable("Could not chdir to " + testDataDir)); -#endif -} - void tst_QObject::disconnect() { SenderObject *s = new SenderObject; @@ -3026,7 +3018,7 @@ void tst_QObject::recursiveSignalEmission() #else QProcess proc; // signalbug helper app should always be next to this test binary - const QString path = QStringLiteral("signalbug/signalbug"); + const QString path = QStringLiteral("signalbug_helper"); proc.start(path); QVERIFY2(proc.waitForStarted(), qPrintable(QString::fromLatin1("Cannot start '%1': %2").arg(path, proc.errorString()))); QVERIFY(proc.waitForFinished()); @@ -6697,6 +6689,26 @@ void tst_QObject::connectBase() QCOMPARE( r1.count_slot3, 1 ); } +void tst_QObject::connectWarnings() +{ + SubSender sub; + SenderObject obj; + ReceiverObject r1; + r1.reset(); + + QTest::ignoreMessage(QtWarningMsg, "QObject::connect(SenderObject, ReceiverObject): invalid null parameter"); + connect(nullptr, &SubSender::signal1, &r1, &ReceiverObject::slot1); + + QTest::ignoreMessage(QtWarningMsg, "QObject::connect(SubSender, Unknown): invalid null parameter"); + connect(&sub, &SubSender::signal1, nullptr, &ReceiverObject::slot1); + + QTest::ignoreMessage(QtWarningMsg, "QObject::connect(SenderObject, ReceiverObject): invalid null parameter"); + connect(nullptr, &SenderObject::signal1, &r1, &ReceiverObject::slot1); + + QTest::ignoreMessage(QtWarningMsg, "QObject::connect(SenderObject, Unknown): invalid null parameter"); + connect(&obj, &SenderObject::signal1, nullptr, &ReceiverObject::slot1); +} + struct QmlReceiver : public QtPrivate::QSlotObjectBase { int callCount; diff --git a/tests/auto/corelib/kernel/qsharedmemory/sharedmemoryhelper/main.cpp b/tests/auto/corelib/kernel/qsharedmemory/producerconsumer/main.cpp index ffbad37d82..ffbad37d82 100644 --- a/tests/auto/corelib/kernel/qsharedmemory/sharedmemoryhelper/main.cpp +++ b/tests/auto/corelib/kernel/qsharedmemory/producerconsumer/main.cpp diff --git a/tests/auto/corelib/kernel/qsharedmemory/producerconsumer/producerconsumer.pro b/tests/auto/corelib/kernel/qsharedmemory/producerconsumer/producerconsumer.pro new file mode 100644 index 0000000000..a6156ed5b6 --- /dev/null +++ b/tests/auto/corelib/kernel/qsharedmemory/producerconsumer/producerconsumer.pro @@ -0,0 +1,5 @@ +QT = core testlib + +SOURCES += main.cpp + +load(qt_test_helper) diff --git a/tests/auto/corelib/kernel/qsharedmemory/qsharedmemory.pro b/tests/auto/corelib/kernel/qsharedmemory/qsharedmemory.pro index 3a4697750e..323d5bbd37 100644 --- a/tests/auto/corelib/kernel/qsharedmemory/qsharedmemory.pro +++ b/tests/auto/corelib/kernel/qsharedmemory/qsharedmemory.pro @@ -1,6 +1,6 @@ TEMPLATE = subdirs qtConfig(sharedmemory) { - !winrt: SUBDIRS = sharedmemoryhelper - SUBDIRS += test + !winrt: SUBDIRS = producerconsumer + SUBDIRS += test.pro } diff --git a/tests/auto/corelib/kernel/qsharedmemory/sharedmemoryhelper/sharedmemoryhelper.pro b/tests/auto/corelib/kernel/qsharedmemory/sharedmemoryhelper/sharedmemoryhelper.pro deleted file mode 100644 index 389015d504..0000000000 --- a/tests/auto/corelib/kernel/qsharedmemory/sharedmemoryhelper/sharedmemoryhelper.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT = core testlib - -win32: CONFIG += console -mac:CONFIG -= app_bundle - -SOURCES += main.cpp -TARGET = helperbinary - -CONFIG(debug_and_release) { - CONFIG(debug, debug|release) { - DESTDIR = ../debug - } else { - DESTDIR = ../release - } -} else { - DESTDIR = .. -} diff --git a/tests/auto/corelib/kernel/qsharedmemory/test.pro b/tests/auto/corelib/kernel/qsharedmemory/test.pro new file mode 100644 index 0000000000..8b3badadb0 --- /dev/null +++ b/tests/auto/corelib/kernel/qsharedmemory/test.pro @@ -0,0 +1,8 @@ +CONFIG += testcase + +QT = core-private testlib + +TARGET = tst_qsharedmemory +SOURCES += tst_qsharedmemory.cpp + +linux: LIBS += -lrt diff --git a/tests/auto/corelib/kernel/qsharedmemory/test/test.pro b/tests/auto/corelib/kernel/qsharedmemory/test/test.pro deleted file mode 100644 index 61124c27ee..0000000000 --- a/tests/auto/corelib/kernel/qsharedmemory/test/test.pro +++ /dev/null @@ -1,18 +0,0 @@ -CONFIG += testcase - -QT = core-private testlib - -linux:LIBS += -lrt - -SOURCES += tst_qsharedmemory.cpp -TARGET = tst_qsharedmemory - -CONFIG(debug_and_release) { - CONFIG(debug, debug|release) { - DESTDIR = ../debug - } else { - DESTDIR = ../release - } -} else { - DESTDIR = .. -} diff --git a/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp b/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp index f81324b894..55deb8eb1a 100644 --- a/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp +++ b/tests/auto/corelib/kernel/qsharedmemory/tst_qsharedmemory.cpp @@ -51,7 +51,6 @@ public: public Q_SLOTS: void init(); - void initTestCase(); void cleanup(); @@ -101,7 +100,6 @@ private slots: void uniqueKey(); protected: - static QString helperBinary(); int remove(const QString &key); QString rememberKey(const QString &key) @@ -125,7 +123,7 @@ private: tst_QSharedMemory::tst_QSharedMemory() : existingSharedMemory(0) - , m_helperBinary(tst_QSharedMemory::helperBinary()) + , m_helperBinary("producerconsumer_helper") { } @@ -133,13 +131,6 @@ tst_QSharedMemory::~tst_QSharedMemory() { } -void tst_QSharedMemory::initTestCase() -{ -#if QT_CONFIG(process) - QVERIFY2(!m_helperBinary.isEmpty(), "Could not find helper binary"); -#endif -} - void tst_QSharedMemory::init() { existingSharedMemory = new QSharedMemory(EXISTING_SHARE); @@ -179,15 +170,6 @@ void tst_QSharedMemory::cleanup() #include <errno.h> #endif -QString tst_QSharedMemory::helperBinary() -{ - QString binary = QStringLiteral("helperbinary"); -#ifdef Q_OS_WIN - binary += QStringLiteral(".exe"); -#endif - return QFINDTESTDATA(binary); -} - int tst_QSharedMemory::remove(const QString &key) { #ifdef Q_OS_WIN diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/acquirerelease.pro b/tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/acquirerelease.pro new file mode 100644 index 0000000000..a6156ed5b6 --- /dev/null +++ b/tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/acquirerelease.pro @@ -0,0 +1,5 @@ +QT = core testlib + +SOURCES += main.cpp + +load(qt_test_helper) diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/systemsemaphorehelper/main.cpp b/tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/main.cpp index 7bfb6b16cc..7bfb6b16cc 100644 --- a/tests/auto/corelib/kernel/qsystemsemaphore/systemsemaphorehelper/main.cpp +++ b/tests/auto/corelib/kernel/qsystemsemaphore/acquirerelease/main.cpp diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/qsystemsemaphore.pro b/tests/auto/corelib/kernel/qsystemsemaphore/qsystemsemaphore.pro index f8a49254d2..70526426aa 100644 --- a/tests/auto/corelib/kernel/qsystemsemaphore/qsystemsemaphore.pro +++ b/tests/auto/corelib/kernel/qsystemsemaphore/qsystemsemaphore.pro @@ -1,3 +1,3 @@ TEMPLATE = subdirs -SUBDIRS = systemsemaphorehelper test +SUBDIRS = acquirerelease test.pro diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/systemsemaphorehelper/systemsemaphorehelper.pro b/tests/auto/corelib/kernel/qsystemsemaphore/systemsemaphorehelper/systemsemaphorehelper.pro deleted file mode 100644 index 389015d504..0000000000 --- a/tests/auto/corelib/kernel/qsystemsemaphore/systemsemaphorehelper/systemsemaphorehelper.pro +++ /dev/null @@ -1,17 +0,0 @@ -QT = core testlib - -win32: CONFIG += console -mac:CONFIG -= app_bundle - -SOURCES += main.cpp -TARGET = helperbinary - -CONFIG(debug_and_release) { - CONFIG(debug, debug|release) { - DESTDIR = ../debug - } else { - DESTDIR = ../release - } -} else { - DESTDIR = .. -} diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/test.pro b/tests/auto/corelib/kernel/qsystemsemaphore/test.pro new file mode 100644 index 0000000000..13bd1fa270 --- /dev/null +++ b/tests/auto/corelib/kernel/qsystemsemaphore/test.pro @@ -0,0 +1,7 @@ +CONFIG += testcase +QT = core testlib + +SOURCES += tst_qsystemsemaphore.cpp +TARGET = tst_qsystemsemaphore + +win32: CONFIG += console diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/test/test.pro b/tests/auto/corelib/kernel/qsystemsemaphore/test/test.pro deleted file mode 100644 index f60207eb01..0000000000 --- a/tests/auto/corelib/kernel/qsystemsemaphore/test/test.pro +++ /dev/null @@ -1,17 +0,0 @@ -CONFIG += testcase -QT = core testlib - -win32: CONFIG += console - -SOURCES += tst_qsystemsemaphore.cpp -TARGET = tst_qsystemsemaphore - -CONFIG(debug_and_release) { - CONFIG(debug, debug|release) { - DESTDIR = ../debug - } else { - DESTDIR = ../release - } -} else { - DESTDIR = .. -} diff --git a/tests/auto/corelib/kernel/qsystemsemaphore/test/tst_qsystemsemaphore.cpp b/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp index 6ff1e14976..5f010ae3d1 100644 --- a/tests/auto/corelib/kernel/qsystemsemaphore/test/tst_qsystemsemaphore.cpp +++ b/tests/auto/corelib/kernel/qsystemsemaphore/tst_qsystemsemaphore.cpp @@ -42,7 +42,6 @@ public: tst_QSystemSemaphore(); public Q_SLOTS: - void initTestCase(); void init(); void cleanup(); @@ -65,22 +64,16 @@ private slots: void initialValue(); private: - static QString helperBinary(); QSystemSemaphore *existingLock; const QString m_helperBinary; }; tst_QSystemSemaphore::tst_QSystemSemaphore() - : m_helperBinary(helperBinary()) + : m_helperBinary("acquirerelease_helper") { } -void tst_QSystemSemaphore::initTestCase() -{ - QVERIFY2(!m_helperBinary.isEmpty(), "Could not find helper binary"); -} - void tst_QSystemSemaphore::init() { existingLock = new QSystemSemaphore(EXISTING_SHARE, 1, QSystemSemaphore::Create); @@ -294,14 +287,6 @@ void tst_QSystemSemaphore::initialValue() #endif } -QString tst_QSystemSemaphore::helperBinary() -{ - QString binary = QStringLiteral("helperbinary"); -#ifdef Q_OS_WIN - binary += QStringLiteral(".exe"); -#endif - return QFINDTESTDATA(binary); -} QTEST_MAIN(tst_QSystemSemaphore) #include "tst_qsystemsemaphore.moc" diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp index 5b2d77a02c..f004ec7856 100644 --- a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp +++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp @@ -75,6 +75,7 @@ private slots: void dontBlockEvents(); void postedEventsShouldNotStarveTimers(); + void connectTo(); }; void tst_QTimer::zeroTimer() @@ -979,5 +980,30 @@ void tst_QTimer::crossThreadSingleShotToFunctor() delete o; } +void tst_QTimer::connectTo() +{ + QTimer timer; + QSignalSpy timeoutSpy(&timer, &QTimer::timeout); + timer.setInterval(0); + timer.start(); + + auto context = new QObject(); + + int count = 0; + timer.connectTo([&count] { count++; }); + QMetaObject::Connection connection = timer.connectTo(context, [&count] { count++; }); + timer.connectTo(&timer, &QTimer::stop); + + + QTest::qWait(100); + QCOMPARE(count, 2); + QCOMPARE(timeoutSpy.count(), 1); + + // Test that connection is bound to context lifetime + QVERIFY(connection); + delete context; + QVERIFY(!connection); +} + QTEST_MAIN(tst_QTimer) #include "tst_qtimer.moc" diff --git a/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc b/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc index b33995ef21..39b85db664 100644 --- a/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc +++ b/tests/auto/corelib/kernel/qtranslator/android_testdata.qrc @@ -1,6 +1,7 @@ <RCC> <qresource prefix="/android_testdata"> <file>hellotr_la.qm</file> + <file>hellotr_empty.qm</file> <file>msgfmt_from_po.qm</file> <file>dependencies_la.qm</file> </qresource> diff --git a/tests/auto/corelib/kernel/qtranslator/hellotr_empty.qm b/tests/auto/corelib/kernel/qtranslator/hellotr_empty.qm new file mode 100644 index 0000000000..be651eede2 --- /dev/null +++ b/tests/auto/corelib/kernel/qtranslator/hellotr_empty.qm @@ -0,0 +1 @@ +<¸dÊÍ!¿`¡½Ý
\ No newline at end of file diff --git a/tests/auto/corelib/kernel/qtranslator/hellotr_empty.ts b/tests/auto/corelib/kernel/qtranslator/hellotr_empty.ts new file mode 100644 index 0000000000..85e0d3992b --- /dev/null +++ b/tests/auto/corelib/kernel/qtranslator/hellotr_empty.ts @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1"/> diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.pro b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro index d8924c2d5f..a985f35a14 100644 --- a/tests/auto/corelib/kernel/qtranslator/qtranslator.pro +++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.pro @@ -5,5 +5,5 @@ SOURCES = tst_qtranslator.cpp RESOURCES += qtranslator.qrc android:!android-embedded: RESOURCES += android_testdata.qrc -else: TESTDATA += dependencies_la.qm hellotr_la.qm msgfmt_from_po.qm +else: TESTDATA += dependencies_la.qm hellotr_empty.qm hellotr_la.qm msgfmt_from_po.qm diff --git a/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc index 333dcfaa21..cb82c6cc95 100644 --- a/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc +++ b/tests/auto/corelib/kernel/qtranslator/qtranslator.qrc @@ -1,5 +1,6 @@ <RCC> <qresource prefix="/tst_qtranslator"> <file>hellotr_la.qm</file> + <file>hellotr_empty.qm</file> </qresource> </RCC> diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp index 451f96339e..40a29c723c 100644 --- a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp +++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp @@ -41,13 +41,12 @@ protected: private slots: void initTestCase(); + void load_data(); void load(); - void load2(); void threadLoad(); void testLanguageChange(); void plural(); void translate_qm_file_generated_with_msgfmt(); - void loadFromResource(); void loadDirectory(); void dependencies(); void translationInThreadWhileInstallingTranslator(); @@ -106,24 +105,45 @@ bool tst_QTranslator::eventFilter(QObject *, QEvent *event) return false; } -void tst_QTranslator::load() +void tst_QTranslator::load_data() { + QTest::addColumn<QString>("filepath"); + QTest::addColumn<bool>("isEmpty"); + QTest::addColumn<QString>("translation"); - QTranslator tor( 0 ); - tor.load("hellotr_la"); - QVERIFY(!tor.isEmpty()); - QCOMPARE(tor.translate("QPushButton", "Hello world!"), QLatin1String("Hallo Welt!")); + QTest::newRow("hellotr_la") << "hellotr_la.qm" << false << "Hallo Welt!"; + QTest::newRow("hellotr_empty") << "hellotr_empty.qm" << true << ""; } -void tst_QTranslator::load2() +void tst_QTranslator::load() { - QTranslator tor( 0 ); - QFile file("hellotr_la.qm"); - file.open(QFile::ReadOnly); - QByteArray data = file.readAll(); - tor.load((const uchar *)data.constData(), data.length()); - QVERIFY(!tor.isEmpty()); - QCOMPARE(tor.translate("QPushButton", "Hello world!"), QLatin1String("Hallo Welt!")); + QFETCH(QString, filepath); + QFETCH(bool, isEmpty); + QFETCH(QString, translation); + + { + QTranslator tor; + QVERIFY(tor.load(QFileInfo(filepath).baseName())); + QCOMPARE(tor.isEmpty(), isEmpty); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); + } + + { + QFile file(filepath); + file.open(QFile::ReadOnly); + QByteArray data = file.readAll(); + QTranslator tor; + QVERIFY(tor.load((const uchar *)data.constData(), data.length())); + QCOMPARE(tor.isEmpty(), isEmpty); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); + } + + { + QTranslator tor; + QVERIFY(tor.load(QString(":/tst_qtranslator/%1").arg(filepath))); + QCOMPARE(tor.isEmpty(), isEmpty); + QCOMPARE(tor.translate("QPushButton", "Hello world!"), translation); + } } class TranslatorThread : public QThread @@ -240,14 +260,6 @@ void tst_QTranslator::translate_qm_file_generated_with_msgfmt() qApp->removeTranslator(&translator); } -void tst_QTranslator::loadFromResource() -{ - QTranslator tor; - tor.load(":/tst_qtranslator/hellotr_la.qm"); - QVERIFY(!tor.isEmpty()); - QCOMPARE(tor.translate("QPushButton", "Hello world!"), QLatin1String("Hallo Welt!")); -} - void tst_QTranslator::loadDirectory() { QString current_base = QDir::current().dirName(); diff --git a/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp index e2a0c2dad3..ac8aaa1327 100644 --- a/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp +++ b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp @@ -46,6 +46,7 @@ protected slots: private slots: void simple_data(); void simple(); + void blockedWaiting(); void manyNotifiers(); void disableNotifiersInActivatedSlot_data(); void disableNotifiersInActivatedSlot(); @@ -104,6 +105,26 @@ void tst_QWinEventNotifier::simple() QVERIFY(simpleActivated); } +void tst_QWinEventNotifier::blockedWaiting() +{ + simpleHEvent = CreateEvent(0, true, false, 0); + QWinEventNotifier n(simpleHEvent); + QObject::connect(&n, &QWinEventNotifier::activated, + this, &tst_QWinEventNotifier::simple_activated); + simpleActivated = false; + + SetEvent(simpleHEvent); + QCOMPARE(WaitForSingleObject(simpleHEvent, 1000), WAIT_OBJECT_0); + + n.setEnabled(false); + ResetEvent(simpleHEvent); + n.setEnabled(true); + + QTestEventLoop::instance().enterLoop(1); + QVERIFY(QTestEventLoop::instance().timeout()); + QVERIFY(!simpleActivated); +} + class EventWithNotifier : public QObject { Q_OBJECT |