summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-11-25 01:00:25 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-11-25 11:30:04 +0100
commit58c69df4d38324644bc49ec5f42ee8343a454b2d (patch)
treede0a1ce603292dcaff134d4e1e8ab064295515a2 /tests
parent03b1d2c44940322208c12c7bceee376b51d8e852 (diff)
parent59a705e3710b0ba93bb698e3223241cfac932948 (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts: src/corelib/tools/qhash.h src/gui/kernel/qevent.h src/widgets/kernel/qshortcut.cpp src/widgets/kernel/qshortcut.h Change-Id: If61c206ee43ad1d97f5b07f58ac93c4583ce5620
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp2
-rw-r--r--tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp11
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp4
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp25
-rw-r--r--tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp2
-rw-r--r--tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp2
-rw-r--r--tests/auto/corelib/text/qlocale/tst_qlocale.cpp10
-rw-r--r--tests/auto/corelib/time/qtimezone/BLACKLIST12
-rw-r--r--tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp36
-rw-r--r--tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp2
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp8
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp3
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp2
-rw-r--r--tests/auto/gui/text/qfont/tst_qfont.cpp7
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro2
-rw-r--r--tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro2
-rw-r--r--tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp63
-rw-r--r--tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp9
-rw-r--r--tests/auto/gui/text/qtexttable/tst_qtexttable.cpp2
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp2
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp49
-rw-r--r--tests/auto/other/gestures/tst_gestures.cpp14
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp6
-rw-r--r--tests/auto/testlib/selftests/mouse/tst_mouse.cpp24
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp16
-rw-r--r--tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp2
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp6
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp6
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp14
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp25
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp14
-rw-r--r--tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp14
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp40
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp23
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp25
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp8
-rw-r--r--tests/auto/xml/dom/qdom/tst_qdom.cpp69
-rw-r--r--tests/benchmarks/widgets/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h2
-rw-r--r--tests/benchmarks/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp2
-rw-r--r--tests/libfuzzer/README5
-rw-r--r--tests/libfuzzer/gui/iccparser/main.cpp4
-rw-r--r--tests/manual/diaglib/nativewindowdump_win.cpp71
-rw-r--r--tests/manual/rhi/shared/examplefw.h6
-rw-r--r--tests/manual/rhi/triquadcube/texturedcuberenderer.cpp2
-rw-r--r--tests/manual/rhi/triquadcube/triangleoncuberenderer.cpp2
-rw-r--r--tests/manual/windowflags/controls.cpp2
48 files changed, 567 insertions, 95 deletions
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
index 1568855032..be75f5b3cc 100644
--- a/tests/auto/corelib/global/qflags/tst_qflags.cpp
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
@@ -49,7 +49,7 @@ void tst_QFlags::testFlag() const
QVERIFY(btn.testFlag(Qt::LeftButton));
QVERIFY(!btn.testFlag(Qt::MidButton));
- btn = 0;
+ btn = { };
QVERIFY(!btn.testFlag(Qt::LeftButton));
}
diff --git a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
index 94f0afa5ed..a661b0388e 100644
--- a/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
+++ b/tests/auto/corelib/global/qfloat16/tst_qfloat16.cpp
@@ -430,6 +430,13 @@ void tst_qfloat16::finite()
QVERIFY(!qIsInf(value));
QVERIFY(!qIsNaN(value));
QCOMPARE(qFpClassify(value), mode);
+
+ // *NOT* using QCOMPARE() on finite qfloat16 values, since that uses fuzzy
+ // comparison, and we need exact here.
+ const qfloat16 zero(0), plus(+1), minus(-1);
+ const qfloat16 magnitude = (value < zero) ? -value : value;
+ QVERIFY(value.copySign(plus) == magnitude);
+ QVERIFY(value.copySign(minus) == -magnitude);
}
void tst_qfloat16::properties()
@@ -534,7 +541,9 @@ void tst_qfloat16::limits() // See also: qNaN() and infinity()
QVERIFY(Bounds::denorm_min() / rose == zero);
if (overOptimized)
QEXPECT_FAIL("", "Over-optimized on ARM", Continue);
- QVERIFY(-Bounds::denorm_min() / rose == -zero);
+ const qfloat16 under = (-Bounds::denorm_min()) / rose;
+ QVERIFY(under == -zero);
+ QCOMPARE(qfloat16(1).copySign(under), qfloat16(-1));
}
QTEST_APPLESS_MAIN(tst_qfloat16)
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index b8ae95dd93..16a30af892 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -499,7 +499,7 @@ void tst_QFile::initTestCase()
file.write("b", 1);
file.close();
#ifndef Q_OS_WIN // Not supported on Windows.
- QVERIFY2(file.setPermissions(0), qPrintable(file.errorString()));
+ QVERIFY2(file.setPermissions({ }), qPrintable(file.errorString()));
#else
QVERIFY2(file.open(QFile::WriteOnly), msgOpenFailed(file).constData());
#endif
@@ -2211,7 +2211,7 @@ public:
QStringList entryList(QDir::Filters, const QStringList &) const { return QStringList(); }
bool caseSensitive() const { return false; }
bool isRelativePath() const { return false; }
- FileFlags fileFlags(FileFlags) const { return 0; }
+ FileFlags fileFlags(FileFlags) const { return { }; }
bool chmod(uint) { return false; }
QString fileName(FileName) const { return name; }
uint ownerId(FileOwner) const { return 0; }
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 744e047c45..ebb9a0a44c 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -1813,19 +1813,22 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
QVERIFY2(creationResult == ERROR_SUCCESS, qPrintable(errorMessage));
QFileInfo fi(path);
- const bool actualIsSymLink = fi.isSymbolicLink();
+ auto guard = qScopeGuard([&fi, this]() {
+ // Ensure that junctions, mountpoints are removed. If this fails, do not remove
+ // temporary directory to prevent it from trashing the system.
+ if (fi.isDir()) {
+ if (!QDir().rmdir(fi.filePath())) {
+ qWarning("Unable to remove NTFS junction '%ls', keeping '%ls'.",
+ qUtf16Printable(fi.fileName()),
+ qUtf16Printable(QDir::toNativeSeparators(m_dir.path())));
+ m_dir.setAutoRemove(false);
+ }
+ }
+ });
const QString actualSymLinkTarget = isSymLink ? fi.symLinkTarget() : QString();
const QString actualCanonicalFilePath = isSymLink ? fi.canonicalFilePath() : QString();
- // Ensure that junctions, mountpoints are removed. If this fails, do not remove
- // temporary directory to prevent it from trashing the system.
- if (fi.isDir()) {
- if (!QDir().rmdir(fi.filePath())) {
- qWarning("Unable to remove NTFS junction '%s'', keeping '%s'.",
- qPrintable(fi.fileName()), qPrintable(QDir::toNativeSeparators(m_dir.path())));
- m_dir.setAutoRemove(false);
- }
- }
- QCOMPARE(actualIsSymLink, isSymLink);
+ QCOMPARE(fi.isJunction(), resource.type == NtfsTestResource::Junction);
+ QCOMPARE(fi.isSymbolicLink(), isSymLink);
if (isSymLink) {
QCOMPARE(actualSymLinkTarget, linkTarget);
QCOMPARE(actualCanonicalFilePath, canonicalFilePath);
diff --git a/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp b/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
index bcf6d6c32b..5c6e633749 100644
--- a/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
+++ b/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
@@ -848,7 +848,7 @@ void tst_QUrlInternal::correctEncodedMistakes()
QString dataTag = QTest::currentDataTag();
QString output = dataTag;
- if (!qt_urlRecode(output, input.constData(), input.constData() + input.length(), 0))
+ if (!qt_urlRecode(output, input.constData(), input.constData() + input.length(), { }))
output += input;
QCOMPARE(output, dataTag + expected);
diff --git a/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp b/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
index c74101928a..ccb6a457a6 100644
--- a/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
@@ -2059,7 +2059,7 @@ void tst_QItemSelectionModel::unselectable()
QCOMPARE(selectionModel.selectedIndexes().count(), 10);
QCOMPARE(selectionModel.selectedRows().count(), 10);
for (int j = 0; j < 10; ++j)
- model.item(j)->setFlags(0);
+ model.item(j)->setFlags({ });
QCOMPARE(selectionModel.selectedIndexes().count(), 0);
QCOMPARE(selectionModel.selectedRows().count(), 0);
}
diff --git a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
index 3aa3d97dbc..0b2d33dc09 100644
--- a/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/text/qlocale/tst_qlocale.cpp
@@ -595,10 +595,7 @@ void tst_QLocale::emptyCtor_data()
ADD_CTOR_TEST("zz_zz", "C");
ADD_CTOR_TEST("zz...", "C");
ADD_CTOR_TEST("en.bla", "en_US");
-#if !(defined(Q_OS_DARWIN) && QT_HAS_FEATURE(address_sanitizer))
- // See QTBUG-69875
ADD_CTOR_TEST("en@bla", "en_US");
-#endif
ADD_CTOR_TEST("en_blaaa", "en_US");
ADD_CTOR_TEST("en_zz", "en_US");
ADD_CTOR_TEST("en_GB.bla", "en_GB");
@@ -607,10 +604,7 @@ void tst_QLocale::emptyCtor_data()
// Empty optional fields, but with punctuators supplied
ADD_CTOR_TEST("en.", "en_US");
-#if !(defined(Q_OS_DARWIN) && QT_HAS_FEATURE(address_sanitizer))
- // See QTBUG-69875
ADD_CTOR_TEST("en@", "en_US");
-#endif
ADD_CTOR_TEST("en.@", "en_US");
ADD_CTOR_TEST("en_", "en_US");
ADD_CTOR_TEST("en_.", "en_US");
@@ -1346,7 +1340,7 @@ void tst_QLocale::long_long_conversion()
void tst_QLocale::long_long_conversion_extra()
{
QLocale l(QLocale::C);
- l.setNumberOptions(0);
+ l.setNumberOptions({ });
QCOMPARE(l.toString((qlonglong)1), QString("1"));
QCOMPARE(l.toString((qlonglong)12), QString("12"));
QCOMPARE(l.toString((qlonglong)123), QString("123"));
@@ -2093,7 +2087,7 @@ void tst_QLocale::numberOptions()
QVERIFY(ok);
QCOMPARE(locale.toString(12345), QString("12345"));
- locale.setNumberOptions(0);
+ locale.setNumberOptions({ });
QCOMPARE(locale.numberOptions(), 0);
QCOMPARE(locale.toInt(QString("12,345"), &ok), 12345);
QVERIFY(ok);
diff --git a/tests/auto/corelib/time/qtimezone/BLACKLIST b/tests/auto/corelib/time/qtimezone/BLACKLIST
index 840c3b1181..b820bab3d9 100644
--- a/tests/auto/corelib/time/qtimezone/BLACKLIST
+++ b/tests/auto/corelib/time/qtimezone/BLACKLIST
@@ -2,10 +2,6 @@
[dataStreamTest]
android
-# QTBUG-69128
-[isTimeZoneIdAvailable]
-android
-
# QTBUG-69129
[specificTransition]
android
@@ -75,10 +71,14 @@ android
android
[transitionEachZone:Asia/Chita@1970]
android
+[transitionEachZone:Asia/Choibalsan@1970]
+android
[transitionEachZone:Asia/Dushanbe@1970]
android
[transitionEachZone:Asia/Ho_Chi_Minh@1970]
android
+[transitionEachZone:Asia/Hovd@1970]
+android
[transitionEachZone:Asia/Kathmandu@1970]
android
[transitionEachZone:Asia/Katmandu@1970]
@@ -109,6 +109,10 @@ android
android
[transitionEachZone:Asia/Thimphu@1970]
android
+[transitionEachZone:Asia/Ulaanbaatar@1970]
+android
+[transitionEachZone:Asia/Ulan_Bator@1970]
+android
[transitionEachZone:Asia/Ust-Nera@1970]
android
[transitionEachZone:Atlantic/Cape_Verde@1970]
diff --git a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
index 5b1bde8ea3..d0ef8023b9 100644
--- a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
+++ b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
@@ -818,6 +818,10 @@ void tst_QTimeZone::isValidId_data()
QTest::addColumn<QByteArray>("input");
QTest::addColumn<bool>("valid");
+ // a-z, A-Z, 0-9, '.', '-', '_' are valid chars
+ // Can't start with '-'
+ // Parts separated by '/', each part min 1 and max of 14 chars
+ // (Android has parts with lengths up to 17, so tolerates this as a special case.)
#define TESTSET(name, section, valid) \
QTest::newRow(name " front") << QByteArray(section "/xyz/xyz") << valid; \
QTest::newRow(name " middle") << QByteArray("xyz/" section "/xyz") << valid; \
@@ -828,11 +832,16 @@ void tst_QTimeZone::isValidId_data()
// Parts separated by '/', each part min 1 and max of 14 chars
TESTSET("empty", "", false);
TESTSET("minimal", "m", true);
+#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED)
+ TESTSET("maximal", "East-Saskatchewan", true); // Android actually uses this
+ TESTSET("too long", "North-Saskatchewan", false); // ... but thankfully not this.
+#else
TESTSET("maximal", "12345678901234", true);
TESTSET("maximal twice", "12345678901234/12345678901234", true);
TESTSET("too long", "123456789012345", false);
TESTSET("too-long/maximal", "123456789012345/12345678901234", false);
TESTSET("maximal/too-long", "12345678901234/123456789012345", false);
+#endif
TESTSET("bad hyphen", "-hyphen", false);
TESTSET("good hyphen", "hy-phen", true);
@@ -879,6 +888,31 @@ void tst_QTimeZone::isValidId_data()
TESTSET("invalid char ' '", " ", false);
#undef TESTSET
+
+ QTest::newRow("az alone") << QByteArray("az") << true;
+ QTest::newRow("AZ alone") << QByteArray("AZ") << true;
+ QTest::newRow("09 alone") << QByteArray("09") << true;
+ QTest::newRow("a/z alone") << QByteArray("a/z") << true;
+ QTest::newRow("a.z alone") << QByteArray("a.z") << true;
+ QTest::newRow("a-z alone") << QByteArray("a-z") << true;
+ QTest::newRow("a_z alone") << QByteArray("a_z") << true;
+ QTest::newRow(".z alone") << QByteArray(".z") << true;
+ QTest::newRow("_z alone") << QByteArray("_z") << true;
+ QTest::newRow("a z alone") << QByteArray("a z") << false;
+ QTest::newRow("a\\z alone") << QByteArray("a\\z") << false;
+ QTest::newRow("a,z alone") << QByteArray("a,z") << false;
+ QTest::newRow("/z alone") << QByteArray("/z") << false;
+ QTest::newRow("-z alone") << QByteArray("-z") << false;
+#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED)
+ QTest::newRow("long alone") << QByteArray("12345678901234567") << true;
+ QTest::newRow("over-long alone") << QByteArray("123456789012345678") << false;
+#else
+ QTest::newRow("long alone") << QByteArray("12345678901234") << true;
+ QTest::newRow("over-long alone") << QByteArray("123456789012345") << false;
+#endif
+
+#else
+ QSKIP("This test requires a Qt -developer-build.");
#endif // QT_BUILD_INTERNAL
}
@@ -889,8 +923,6 @@ void tst_QTimeZone::isValidId()
QFETCH(bool, valid);
QCOMPARE(QTimeZonePrivate::isValidId(input), valid);
-#else
- QSKIP("This test requires a Qt -developer-build.");
#endif
}
diff --git a/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp b/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
index f95d48f042..01181ce20e 100644
--- a/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
+++ b/tests/auto/corelib/tools/qscopeguard/tst_qscopeguard.cpp
@@ -67,7 +67,7 @@ void tst_QScopedGuard::exceptions()
bool caught = false;
QT_TRY
{
- auto cleanup = qScopeGuard([&caught] { s_globalState++; });
+ auto cleanup = qScopeGuard([] { s_globalState++; });
QT_THROW(std::bad_alloc()); //if Qt compiled without exceptions this is noop
s_globalState = 100;
}
diff --git a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
index fdcd8b07c7..0f266200af 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
@@ -737,7 +737,7 @@ void tst_QDBusAbstractAdaptor::sameObjectDifferentPaths()
MyObject obj(2);
con.registerObject("/p1",&obj);
- con.registerObject("/p2",&obj, 0); // don't export anything
+ con.registerObject("/p2",&obj, { }); // don't export anything
QDBusSignalSpy spy;
con.connect(con.baseService(), "/p1", "local.Interface2", "signal", &spy, SLOT(slot(QDBusMessage)));
@@ -759,7 +759,7 @@ void tst_QDBusAbstractAdaptor::scriptableSignalOrNot()
MyObject obj(0);
con.registerObject("/p1",&obj, QDBusConnection::ExportScriptableSignals);
- con.registerObject("/p2",&obj, 0); // don't export anything
+ con.registerObject("/p2",&obj, { }); // don't export anything
QDBusSignalSpy spy;
con.connect(con.baseService(), "/p1", "local.MyObject", "scriptableSignalVoid", &spy, SLOT(slot(QDBusMessage)));
@@ -1270,7 +1270,7 @@ void tst_QDBusAbstractAdaptor::sameObjectDifferentPathsPeer()
newMyObjectPeer(2);
registerMyObjectPeer("/p1");
- registerMyObjectPeer("/p2", 0); // don't export anything
+ registerMyObjectPeer("/p2", { }); // don't export anything
syncPeer();
QDBusSignalSpy spy;
@@ -1294,7 +1294,7 @@ void tst_QDBusAbstractAdaptor::scriptableSignalOrNotPeer()
newMyObjectPeer(0);
registerMyObjectPeer("/p1", QDBusConnection::ExportScriptableSignals);
- registerMyObjectPeer("/p2", 0); // don't export anything
+ registerMyObjectPeer("/p2", { }); // don't export anything
syncPeer();
QDBusSignalSpy spy;
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp
index 2a9b92ed35..e9aa9aad30 100644
--- a/tests/auto/gui/image/qimage/tst_qimage.cpp
+++ b/tests/auto/gui/image/qimage/tst_qimage.cpp
@@ -924,6 +924,9 @@ void tst_QImage::convertToFormat_data()
QTest::newRow("blue rgb30 -> argb32") << int(QImage::Format_RGB30) << 0xff0000ff
<< int(QImage::Format_ARGB32) << 0xff0000ff;
+ QTest::newRow("semigray argb32 -> a2rgb30 pm") << int(QImage::Format_ARGB32) << 0x4c646565u
+ << int(QImage::Format_A2RGB30_Premultiplied) << 0x55212222u;
+
QTest::newRow("white gray8 -> argb pm") << int(QImage::Format_Grayscale8) << 0xfffffeffu
<< int(QImage::Format_ARGB32_Premultiplied) << 0xfffefefeu;
QTest::newRow("gray gray8 -> argb pm") << int(QImage::Format_Grayscale8) << 0xff565557u
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 6e48439944..de9c876b3f 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -715,7 +715,7 @@ void tst_QPainter::drawBorderPixmap()
QPainter p(&pm);
p.setTransform(QTransform(-1,0,0,-1,173.5,153.5));
qDrawBorderPixmap(&p, QRect(0,0,75,105), QMargins(39,39,39,39), src, QRect(0,0,79,79), QMargins(39,39,39,39),
- QTileRules(Qt::StretchTile,Qt::StretchTile), 0);
+ QTileRules(Qt::StretchTile,Qt::StretchTile), { });
}
#endif
diff --git a/tests/auto/gui/text/qfont/tst_qfont.cpp b/tests/auto/gui/text/qfont/tst_qfont.cpp
index d722856366..9487436336 100644
--- a/tests/auto/gui/text/qfont/tst_qfont.cpp
+++ b/tests/auto/gui/text/qfont/tst_qfont.cpp
@@ -301,6 +301,13 @@ void tst_QFont::resolve()
font5.setFamilies(fontFamilies);
font6 = font6.resolve(font5);
QCOMPARE(font6.families(), fontFamilies);
+
+ QFont font7, font8;
+ font7.setFamily(QLatin1String("Helvetica"));
+ font8.setFamilies(fontFamilies);
+ font7 = font7.resolve(font8);
+ QCOMPARE(font7.families(), QStringList({"Helvetica", "Arial"}));
+ QCOMPARE(font7.family(), "Helvetica");
}
#ifndef QT_NO_WIDGETS
diff --git a/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro b/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro
index a78c429433..c91eaad944 100644
--- a/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro
+++ b/tests/auto/gui/text/qsyntaxhighlighter/qsyntaxhighlighter.pro
@@ -2,4 +2,4 @@ CONFIG += testcase
TARGET = tst_qsyntaxhighlighter
SOURCES += tst_qsyntaxhighlighter.cpp
QT += testlib
-qtHaveModule(widgets) QT += widgets
+qtHaveModule(widgets): QT += widgets
diff --git a/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro b/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro
index 5d31ee3930..322690e4cc 100644
--- a/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro
+++ b/tests/auto/gui/text/qtextdocumentlayout/qtextdocumentlayout.pro
@@ -1,7 +1,7 @@
CONFIG += testcase
TARGET = tst_qtextdocumentlayout
QT += testlib
-qtHaveModule(widgets) QT += widgets
+qtHaveModule(widgets): QT += widgets
SOURCES += tst_qtextdocumentlayout.cpp
diff --git a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
index 8f51a7a474..2f0b877799 100644
--- a/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownimporter/tst_qtextmarkdownimporter.cpp
@@ -53,6 +53,8 @@ class tst_QTextMarkdownImporter : public QObject
private slots:
void headingBulletsContinuations();
void thematicBreaks();
+ void lists_data();
+ void lists();
};
void tst_QTextMarkdownImporter::headingBulletsContinuations()
@@ -159,5 +161,66 @@ void tst_QTextMarkdownImporter::thematicBreaks()
#endif
}
+void tst_QTextMarkdownImporter::lists_data()
+{
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<int>("expectedItemCount");
+ QTest::addColumn<bool>("expectedEmptyItems");
+ QTest::addColumn<QString>("rewrite");
+
+ // Some of these cases show odd behavior, which is subject to change
+ // as the importer and the writer are tweaked to fix bugs over time.
+ QTest::newRow("dot newline") << ".\n" << 0 << true << ".\n\n";
+ QTest::newRow("number dot newline") << "1.\n" << 1 << true << "1. \n";
+ QTest::newRow("star newline") << "*\n" << 1 << true << "* \n";
+ QTest::newRow("hyphen newline") << "-\n" << 1 << true << "- \n";
+ QTest::newRow("hyphen space newline") << "- \n" << 1 << true << "- \n";
+ QTest::newRow("hyphen space letter newline") << "- a\n" << 1 << false << "- a\n";
+ QTest::newRow("hyphen nbsp newline") <<
+ QString::fromUtf8("-\u00A0\n") << 0 << true << "-\u00A0\n\n";
+ QTest::newRow("nested empty lists") << "*\n *\n *\n" << 1 << true << " * \n";
+ QTest::newRow("list nested in empty list") << "-\n * a\n" << 2 << false << "- \n * a\n";
+ QTest::newRow("lists nested in empty lists")
+ << "-\n * a\n * b\n- c\n *\n + d\n" << 5 << false
+ << "- \n * a\n * b\n- c *\n + d\n";
+ QTest::newRow("numeric lists nested in empty lists")
+ << "- \n 1. a\n 2. b\n- c\n 1.\n + d\n" << 4 << false
+ << "- \n 1. a\n 2. b\n- c 1. + d\n";
+}
+
+void tst_QTextMarkdownImporter::lists()
+{
+ QFETCH(QString, input);
+ QFETCH(int, expectedItemCount);
+ QFETCH(bool, expectedEmptyItems);
+ QFETCH(QString, rewrite);
+
+ QTextDocument doc;
+ doc.setMarkdown(input); // QTBUG-78870 : don't crash
+ QTextFrame::iterator iterator = doc.rootFrame()->begin();
+ QTextFrame *currentFrame = iterator.currentFrame();
+ int i = 0;
+ int itemCount = 0;
+ bool emptyItems = true;
+ while (!iterator.atEnd()) {
+ // There are no child frames
+ QCOMPARE(iterator.currentFrame(), currentFrame);
+ // Check whether the block is text or a horizontal rule
+ QTextBlock block = iterator.currentBlock();
+ if (block.textList()) {
+ ++itemCount;
+ if (!block.text().isEmpty())
+ emptyItems = false;
+ }
+ qCDebug(lcTests, "%d %s%s", i,
+ (block.textList() ? "<li>" : "<p>"), qPrintable(block.text()));
+ ++iterator;
+ ++i;
+ }
+ QCOMPARE(itemCount, expectedItemCount);
+ QCOMPARE(emptyItems, expectedEmptyItems);
+ QCOMPARE(doc.toMarkdown(), rewrite);
+}
+
QTEST_MAIN(tst_QTextMarkdownImporter)
#include "tst_qtextmarkdownimporter.moc"
diff --git a/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp b/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
index 1e6c354f17..d15e856a20 100644
--- a/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
+++ b/tests/auto/gui/text/qtextmarkdownwriter/tst_qtextmarkdownwriter.cpp
@@ -50,6 +50,7 @@ private slots:
void testWriteParagraph_data();
void testWriteParagraph();
void testWriteList();
+ void testWriteEmptyList();
void testWriteNestedBulletLists_data();
void testWriteNestedBulletLists();
void testWriteNestedNumericLists();
@@ -124,6 +125,14 @@ void tst_QTextMarkdownWriter::testWriteList()
"- ListItem 1\n- ListItem 2\n"));
}
+void tst_QTextMarkdownWriter::testWriteEmptyList()
+{
+ QTextCursor cursor(document);
+ cursor.createList(QTextListFormat::ListDisc);
+
+ QCOMPARE(documentToUnixMarkdown(), QString::fromLatin1("- \n"));
+}
+
void tst_QTextMarkdownWriter::testWriteNestedBulletLists_data()
{
QTest::addColumn<bool>("checkbox");
diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
index 7b2ff4cc10..474079037b 100644
--- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
@@ -1041,7 +1041,7 @@ public:
QList<QRectF> rects;
PaintEngine()
- : QPaintEngine(0)
+ : QPaintEngine(QPaintEngine::PaintEngineFeatures{ })
{}
virtual Type type() const
{
diff --git a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
index 8d32ddf37c..a13adc8ebf 100644
--- a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
+++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
@@ -1272,7 +1272,7 @@ void tst_QNetworkSession::usagePolicies()
QNetworkSession::UsagePolicies initial;
initial = session.usagePolicies();
if (initial != 0)
- QNetworkSessionPrivate::setUsagePolicies(session, 0);
+ QNetworkSessionPrivate::setUsagePolicies(session, { });
QSignalSpy spy(&session, SIGNAL(usagePoliciesChanged(QNetworkSession::UsagePolicies)));
QNetworkSessionPrivate::setUsagePolicies(session, QNetworkSession::NoBackgroundTrafficPolicy);
QCOMPARE(spy.count(), 1);
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 98cb343ff8..5a643c11a2 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -262,6 +262,8 @@ private slots:
void disabledProtocols_data();
void disabledProtocols();
+ void oldErrorsOnSocketReuse();
+
void setEmptyDefaultConfiguration(); // this test should be last
protected slots:
@@ -4391,6 +4393,53 @@ void tst_QSslSocket::disabledProtocols()
}
}
+void tst_QSslSocket::oldErrorsOnSocketReuse()
+{
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return; // not relevant
+ SslServer server;
+ server.protocol = QSsl::TlsV1_1;
+ server.m_certFile = testDataDir + "certs/fluke.cert";
+ server.m_keyFile = testDataDir + "certs/fluke.key";
+ QVERIFY(server.listen(QHostAddress::SpecialAddress::LocalHost));
+
+ QSslSocket socket;
+ socket.setProtocol(QSsl::TlsV1_1);
+ QList<QSslError> errorList;
+ auto connection = connect(&socket, QOverload<const QList<QSslError> &>::of(&QSslSocket::sslErrors),
+ [&socket, &errorList](const QList<QSslError> &errors) {
+ errorList += errors;
+ socket.ignoreSslErrors(errors);
+ socket.resume();
+ });
+
+ socket.connectToHostEncrypted(QString::fromLatin1("localhost"), server.serverPort());
+ QVERIFY(QTest::qWaitFor([&socket](){ return socket.isEncrypted(); }));
+ socket.disconnectFromHost();
+ if (socket.state() != QAbstractSocket::UnconnectedState) {
+ QVERIFY(QTest::qWaitFor(
+ [&socket](){
+ return socket.state() == QAbstractSocket::UnconnectedState;
+ }));
+ }
+
+ auto oldList = errorList;
+ errorList.clear();
+ server.close();
+ server.m_certFile = testDataDir + "certs/bogus-client.crt";
+ server.m_keyFile = testDataDir + "certs/bogus-client.key";
+ QVERIFY(server.listen(QHostAddress::SpecialAddress::LocalHost));
+
+ socket.connectToHostEncrypted(QString::fromLatin1("localhost"), server.serverPort());
+ QVERIFY(QTest::qWaitFor([&socket](){ return socket.isEncrypted(); }));
+
+ for (const auto &error : oldList) {
+ QVERIFY2(!errorList.contains(error),
+ "The new errors should not contain any of the old ones");
+ }
+}
+
#endif // QT_NO_SSL
QTEST_MAIN(tst_QSslSocket)
diff --git a/tests/auto/other/gestures/tst_gestures.cpp b/tests/auto/other/gestures/tst_gestures.cpp
index 9abe9a77c0..c1d39d8b72 100644
--- a/tests/auto/other/gestures/tst_gestures.cpp
+++ b/tests/auto/other/gestures/tst_gestures.cpp
@@ -106,7 +106,7 @@ public:
QGestureRecognizer::Result recognize(QGesture *state, QObject*, QEvent *event)
{
if (event->type() == CustomEvent::EventType) {
- QGestureRecognizer::Result result = 0;
+ QGestureRecognizer::Result result;
if (CustomGestureRecognizer::ConsumeEvents)
result |= QGestureRecognizer::ConsumeEventHint;
CustomGesture *g = static_cast<CustomGesture*>(state);
@@ -2200,41 +2200,41 @@ void tst_Gestures::testReuseCanceledGestures()
targetPos = gv->viewport()->mapFromParent(targetPos);
// "Tap" starts on child widget
- QTest::mousePress(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QTest::mousePress(gv->viewport(), Qt::LeftButton, { }, targetPos);
QCOMPARE(target->started(), 1);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 0);
QCOMPARE(target->canceled(), 0);
// Canceling gesture starts on parent
- QTest::mousePress(gv->viewport(), Qt::RightButton, 0, targetPos);
+ QTest::mousePress(gv->viewport(), Qt::RightButton, { }, targetPos);
QCOMPARE(target->started(), 1);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 0);
QCOMPARE(target->canceled(), 1); // <- child canceled
// Canceling gesture ends
- QTest::mouseRelease(gv->viewport(), Qt::RightButton, 0, targetPos);
+ QTest::mouseRelease(gv->viewport(), Qt::RightButton, { }, targetPos);
QCOMPARE(target->started(), 1);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 0);
QCOMPARE(target->canceled(), 1);
// Tap would end if not canceled
- QTest::mouseRelease(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QTest::mouseRelease(gv->viewport(), Qt::LeftButton, { }, targetPos);
QCOMPARE(target->started(), 1);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 0);
QCOMPARE(target->canceled(), 1);
// New "Tap" starts
- QTest::mousePress(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QTest::mousePress(gv->viewport(), Qt::LeftButton, { }, targetPos);
QCOMPARE(target->started(), 2);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 0);
QCOMPARE(target->canceled(), 1);
- QTest::mouseRelease(gv->viewport(), Qt::LeftButton, 0, targetPos);
+ QTest::mouseRelease(gv->viewport(), Qt::LeftButton, { }, targetPos);
QCOMPARE(target->started(), 2);
QCOMPARE(target->updated(), 0);
QCOMPARE(target->finished(), 1);
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 82dc826db2..d2a9688f10 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -316,7 +316,7 @@ void tst_QAccessibility::eventTest()
QVERIFY(QTestAccessibility::containsEvent(&showEvent));
button->setFocus(Qt::MouseFocusReason);
QTestAccessibility::clearEvents();
- QTest::mouseClick(button, Qt::LeftButton, 0);
+ QTest::mouseClick(button, Qt::LeftButton, { });
button->setAccessibleName("Olaf the second");
QAccessibleEvent nameEvent(button, QAccessible::NameChanged);
@@ -2843,14 +2843,14 @@ void tst_QAccessibility::listTest()
QTestAccessibility::clearEvents();
// Check for events
- QTest::mouseClick(listView->viewport(), Qt::LeftButton, 0, listView->visualItemRect(listView->item(1)).center());
+ QTest::mouseClick(listView->viewport(), Qt::LeftButton, { }, listView->visualItemRect(listView->item(1)).center());
QAccessibleEvent selectionEvent(listView, QAccessible::SelectionAdd);
selectionEvent.setChild(1);
QAccessibleEvent focusEvent(listView, QAccessible::Focus);
focusEvent.setChild(1);
QVERIFY(QTestAccessibility::containsEvent(&selectionEvent));
QVERIFY(QTestAccessibility::containsEvent(&focusEvent));
- QTest::mouseClick(listView->viewport(), Qt::LeftButton, 0, listView->visualItemRect(listView->item(2)).center());
+ QTest::mouseClick(listView->viewport(), Qt::LeftButton, { }, listView->visualItemRect(listView->item(2)).center());
QAccessibleEvent selectionEvent2(listView, QAccessible::SelectionAdd);
selectionEvent2.setChild(2);
diff --git a/tests/auto/testlib/selftests/mouse/tst_mouse.cpp b/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
index 3c731cde69..d097027e7e 100644
--- a/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
+++ b/tests/auto/testlib/selftests/mouse/tst_mouse.cpp
@@ -93,31 +93,31 @@ void tst_Mouse::stateHandlingPart1()
// verify that we have a clean state after the previous data set
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::NoButton);
- QTest::mousePress(&w, Qt::LeftButton, 0, point);
+ QTest::mousePress(&w, Qt::LeftButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::LeftButton);
- QTest::mousePress(&w, Qt::RightButton, 0, point);
+ QTest::mousePress(&w, Qt::RightButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::LeftButton | Qt::RightButton);
QTest::mouseMove(&w, point += step);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::LeftButton | Qt::RightButton);
- QTest::mouseRelease(&w, Qt::LeftButton, 0, point);
+ QTest::mouseRelease(&w, Qt::LeftButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::RightButton);
QTest::mouseMove(&w, point += step);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::RightButton);
// test invalid input - left button was already released
- QTest::mouseRelease(&w, Qt::LeftButton, 0, point += point);
+ QTest::mouseRelease(&w, Qt::LeftButton, { }, point += point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::RightButton);
// test invalid input - right button is already pressed
- QTest::mousePress(&w, Qt::RightButton, 0, point);
+ QTest::mousePress(&w, Qt::RightButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::RightButton);
// now continue with valid input
- QTest::mouseRelease(&w, Qt::RightButton, 0, point += point);
+ QTest::mouseRelease(&w, Qt::RightButton, { }, point += point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::NoButton);
QTest::mouseMove(&w, point += step);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::NoButton);
// exit this test function with some button in a pressed state
- QTest::mousePress(&w, Qt::LeftButton, 0, point);
- QTest::mousePress(&w, Qt::RightButton, 0, point);
+ QTest::mousePress(&w, Qt::LeftButton, { }, point);
+ QTest::mousePress(&w, Qt::RightButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::LeftButton | Qt::RightButton);
}
@@ -144,8 +144,8 @@ void tst_Mouse::stateHandlingPart2()
QSKIP("Not implemented beyond this point!");
QPoint point(40, 40);
- QTest::mousePress(&w, Qt::LeftButton, 0, point);
- QTest::mousePress(&w, Qt::RightButton, 0, point);
+ QTest::mousePress(&w, Qt::LeftButton, { }, point);
+ QTest::mousePress(&w, Qt::RightButton, { }, point);
QCOMPARE(QTestPrivate::qtestMouseButtons, Qt::LeftButton | Qt::RightButton);
w.moveCount = 0;
// The windowing system will send mouse events with no buttons set
@@ -201,11 +201,11 @@ void tst_Mouse::deterministicEvents()
QCOMPARE(w.moveCount, 0);
static QPoint m_cachedLastCursorPosition;
if (firstRun) {
- QTest::mousePress(&w, Qt::LeftButton, 0, QPoint(40, 40));
+ QTest::mousePress(&w, Qt::LeftButton, { }, QPoint(40, 40));
m_cachedLastCursorPosition = QGuiApplicationPrivate::lastCursorPosition.toPoint();
} else {
QPoint point = w.mapFromGlobal(m_cachedLastCursorPosition);
- QTest::mousePress(&w, Qt::LeftButton, 0, point);
+ QTest::mousePress(&w, Qt::LeftButton, { }, point);
}
QCOMPARE(w.pressCount, 1);
QCOMPARE(w.moveCount, 1);
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index f910b12cc6..7398cc103e 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1030,15 +1030,13 @@ void tst_QFileSystemModel::dirsBeforeFiles()
// Wait for model to be notified by the file system watcher
QTRY_COMPARE(model->rowCount(root), 2 * itemCount);
- // ensure that no file occurs before a directory
- for (int i = 0; i < model->rowCount(root); ++i) {
+ // Ensure that no file occurs before any directory:
+ for (int i = 1; i < model->rowCount(root); ++i) {
#ifndef Q_OS_MAC
- QVERIFY(i == 0 ||
- !(model->fileInfo(model->index(i - 1, 0, root)).isFile()
+ QVERIFY(!(model->fileInfo(model->index(i - 1, 0, root)).isFile()
&& model->fileInfo(model->index(i, 0, root)).isDir()));
#else
- QVERIFY(i == 0 ||
- model->fileInfo(model->index(i - 1, 0, root)).fileName() <
+ QVERIFY(model->fileInfo(model->index(i - 1, 0, root)).fileName() <
model->fileInfo(model->index(i, 0, root)).fileName());
#endif
}
@@ -1048,7 +1046,7 @@ void tst_QFileSystemModel::roleNames_data()
{
QTest::addColumn<int>("role");
QTest::addColumn<QByteArray>("roleName");
- QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration");
+ QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon");
QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display");
QTest::newRow("fileIcon") << int(QFileSystemModel::FileIconRole) << QByteArray("fileIcon");
QTest::newRow("filePath") << int(QFileSystemModel::FilePathRole) << QByteArray("filePath");
@@ -1065,8 +1063,8 @@ void tst_QFileSystemModel::roleNames()
QVERIFY(roles.contains(role));
QFETCH(QByteArray, roleName);
- QList<QByteArray> values = roles.values(role);
- QVERIFY(values.contains(roleName));
+ QCOMPARE(roles.values(role).count(), 1);
+ QCOMPARE(roles.value(role), roleName);
}
static inline QByteArray permissionRowName(bool readOnly, int permission)
diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
index 83bb4dc08f..f5358ceb93 100644
--- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
+++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
@@ -228,6 +228,7 @@ void tst_QFontDialog::qtbug_41513_stylesheetStyle()
// The fontdialog sets the styleName, when the fontdatabase knows the style name.
resultFont.setStyleName(testFont.styleName());
+ testFont.setFamilies(QStringList(testFont.family()));
QCOMPARE(resultFont, testFont);
// reset stylesheet
diff --git a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index ad17c2a557..5a9ba5c9d3 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -340,7 +340,7 @@ void tst_QGraphicsGridLayout::qgraphicsgridlayout()
layout.setColumnStretchFactor(0, 0);
layout.setGeometry(QRectF());
layout.setHorizontalSpacing(0);
- layout.setRowAlignment(0, 0);
+ layout.setRowAlignment(0, { });
layout.setRowFixedHeight(0, 0);
layout.setRowMaximumHeight(0, 0);
layout.setRowMinimumHeight(0, 0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 0fb95b9f34..953791818e 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -1914,7 +1914,7 @@ void tst_QGraphicsItem::acceptedMouseButtons()
event.setScenePos(QPointF(0, 0));
QCoreApplication::sendEvent(&scene, &event);
QCOMPARE(scene.mouseGrabberItem(), item2);
- item2->setAcceptedMouseButtons(nullptr);
+ item2->setAcceptedMouseButtons({ });
QCOMPARE(scene.mouseGrabberItem(), nullptr);
QCoreApplication::sendEvent(&scene, &event);
QCOMPARE(scene.mouseGrabberItem(), item1);
@@ -8071,7 +8071,7 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption()
void tst_QGraphicsItem::itemSendsGeometryChanges()
{
ItemChangeTester item;
- item.setFlags(nullptr);
+ item.setFlags({ });
item.clear();
QTransform x = QTransform().rotate(45);
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index d3477be986..c42e74ddbd 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -174,7 +174,7 @@ private slots:
// Subclass that exposes the protected functions.
class SubQGraphicsWidget : public QGraphicsWidget {
public:
- SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = 0)
+ SubQGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags windowFlags = { })
: QGraphicsWidget(parent, windowFlags), eventCount(0)
{ }
@@ -254,7 +254,7 @@ protected:
class SizeHinter : public QGraphicsWidget
{
public:
- SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0,
+ SizeHinter(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = { },
const QSizeF &min = QSizeF(5,5),
const QSizeF &pref = QSizeF(50, 50),
const QSizeF &max = QSizeF(500, 500))
@@ -2580,7 +2580,7 @@ void tst_QGraphicsWidget::shortcutsDeletion()
class MessUpPainterWidget : public QGraphicsWidget
{
public:
- MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0)
+ MessUpPainterWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = { })
: QGraphicsWidget(parent, wFlags)
{}
diff --git a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
index 5097f2e356..546b2ab3a8 100644
--- a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
+++ b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
@@ -697,7 +697,7 @@ void tst_QDirModel::roleNames_data()
{
QTest::addColumn<int>("role");
QTest::addColumn<QByteArray>("roleName");
- QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("decoration");
+ QTest::newRow("decoration") << int(Qt::DecorationRole) << QByteArray("fileIcon");
QTest::newRow("display") << int(Qt::DisplayRole) << QByteArray("display");
QTest::newRow("fileIcon") << int(QDirModel::FileIconRole) << QByteArray("fileIcon");
QTest::newRow("filePath") << int(QDirModel::FilePathRole) << QByteArray("filePath");
@@ -713,8 +713,8 @@ void tst_QDirModel::roleNames()
QVERIFY(roles.contains(role));
QFETCH(QByteArray, roleName);
- QList<QByteArray> values = roles.values(role);
- QVERIFY(values.contains(roleName));
+ QCOMPARE(roles.values(role).count(), 1);
+ QCOMPARE(roles.value(role), roleName);
}
diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
index cb083fdcbe..dcb932de66 100644
--- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
@@ -1512,6 +1512,20 @@ void tst_QListWidget::itemData()
QCOMPARE(flags.count(), 6);
for (int i = 0; i < 4; ++i)
QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1));
+
+ item.setBackground(QBrush(Qt::red));
+ item.setForeground(QBrush(Qt::red));
+ item.setSizeHint(QSize(10, 10));
+ QCOMPARE(item.data(Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(Qt::ForegroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item.setBackground(QBrush());
+ item.setForeground(QBrush());
+ item.setSizeHint(QSize());
+ QCOMPARE(item.data(Qt::BackgroundRole), QVariant());
+ QCOMPARE(item.data(Qt::ForegroundRole), QVariant());
+ QCOMPARE(item.data(Qt::SizeHintRole), QVariant());
}
void tst_QListWidget::changeDataWithSorting()
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index f640996690..38dae7743f 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1404,9 +1404,17 @@ void tst_QTableWidget::setItemData()
QCOMPARE(table.currentRoles, QVector<int>({Qt::DisplayRole, Qt::EditRole, Qt::ToolTipRole}));
QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("Display"));
+ QCOMPARE(table.model()->data(idx, Qt::EditRole).toString(), QLatin1String("Display"));
QCOMPARE(table.model()->data(idx, Qt::ToolTipRole).toString(), QLatin1String("ToolTip"));
QCOMPARE(dataChangedSpy.count(), 1);
- QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.takeFirst().at(0)));
+ QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(0)));
+ QCOMPARE(idx, qvariant_cast<QModelIndex>(dataChangedSpy.first().at(1)));
+ const auto roles = qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2));
+ QCOMPARE(roles.size(), 3);
+ QVERIFY(roles.contains(Qt::DisplayRole));
+ QVERIFY(roles.contains(Qt::EditRole));
+ QVERIFY(roles.contains(Qt::ToolTipRole));
+ dataChangedSpy.clear();
table.model()->setItemData(idx, data);
QCOMPARE(dataChangedSpy.count(), 0);
@@ -1416,6 +1424,21 @@ void tst_QTableWidget::setItemData()
table.model()->setItemData(idx, data);
QCOMPARE(table.model()->data(idx, Qt::DisplayRole).toString(), QLatin1String("dizplaye"));
QCOMPARE(dataChangedSpy.count(), 1);
+ QCOMPARE(QVector<int>({Qt::DisplayRole, Qt::EditRole}), qvariant_cast<QVector<int>>(dataChangedSpy.first().at(2)));
+
+ item->setBackground(QBrush(Qt::red));
+ item->setForeground(QBrush(Qt::green));
+ item->setSizeHint(QSize(10, 10));
+ QCOMPARE(item->data(Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item->data(Qt::ForegroundRole), QVariant(QBrush(Qt::green)));
+ QCOMPARE(item->data(Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item->setBackground(QBrush());
+ item->setForeground(QBrush());
+ item->setSizeHint(QSize());
+ QCOMPARE(item->data(Qt::BackgroundRole), QVariant());
+ QCOMPARE(item->data(Qt::ForegroundRole), QVariant());
+ QCOMPARE(item->data(Qt::SizeHintRole), QVariant());
}
void tst_QTableWidget::cellWidget()
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index dcffe8043b..9750a31824 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -2868,6 +2868,7 @@ public:
};
Node *root;
+ bool crash = false;
EvilModel(QObject *parent = nullptr): QAbstractItemModel(parent), root(new Node)
{}
@@ -2876,6 +2877,11 @@ public:
delete root;
}
+ void setCrash()
+ {
+ crash = true;
+ }
+
void change()
{
emit layoutAboutToBeChanged();
@@ -2944,6 +2950,10 @@ public:
QVariant data(const QModelIndex &idx, int role) const override
{
+ if (crash) {
+ QTest::qFail("Should not get here...", __FILE__, __LINE__);
+ return QVariant();
+ }
if (idx.isValid() && role == Qt::DisplayRole) {
Node *parentNode = root;
if (idx.isValid()) {
@@ -2963,6 +2973,7 @@ void tst_QTreeView::evilModel_data()
{
QTest::addColumn<bool>("visible");
QTest::newRow("visible") << false;
+ QTest::newRow("visible") << true;
}
void tst_QTreeView::evilModel()
@@ -3132,6 +3143,9 @@ void tst_QTreeView::evilModel()
model.change();
view.setRootIndex(secondLevel);
+
+ model.setCrash();
+ view.setModel(nullptr);
}
void tst_QTreeView::indexRowSizeHint()
diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
index 2118bb5a29..7da56ab797 100644
--- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
@@ -1994,6 +1994,20 @@ void tst_QTreeWidget::itemData()
QCOMPARE(flags[Qt::UserRole + i].toString(), QString::number(i + 1));
flags = widget.model()->itemData(widget.model()->index(0, 1));
QCOMPARE(flags.count(), 0);
+
+ item.setBackground(0, QBrush(Qt::red));
+ item.setForeground(0, QBrush(Qt::green));
+ item.setSizeHint(0, QSize(10, 10));
+ QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant(QBrush(Qt::red)));
+ QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant(QBrush(Qt::green)));
+ QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant(QSize(10, 10)));
+ // an empty brush should result in a QVariant()
+ item.setBackground(0, QBrush());
+ item.setForeground(0, QBrush());
+ item.setSizeHint(0, QSize());
+ QCOMPARE(item.data(0, Qt::BackgroundRole), QVariant());
+ QCOMPARE(item.data(0, Qt::ForegroundRole), QVariant());
+ QCOMPARE(item.data(0, Qt::SizeHintRole), QVariant());
}
void tst_QTreeWidget::enableDisable()
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 82ab9c9c3b..aa687cfc3c 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -103,6 +103,7 @@ public slots:
private slots:
void cleanup();
+ void pmf_connect();
void number_data();
void number();
void text_data();
@@ -203,6 +204,45 @@ void tst_QShortcut::cleanup()
QVERIFY(QApplication::topLevelWidgets().size() <= 1); // The data driven tests keep a widget around
}
+void tst_QShortcut::pmf_connect()
+{
+ class MyObject : public QObject
+ {
+ public:
+ using QObject::QObject;
+ void onActivated() { ++activated; }
+ void onAmbiguous() { ++ambiguous; }
+ void reset() { activated = 0; ambiguous = 0; }
+ int activated = 0;
+ int ambiguous = 0;
+ } myObject;
+ QWidget parent;
+
+ auto runCheck = [&myObject](QShortcut *sc, int activated, int ambiguous)
+ {
+ myObject.reset();
+ sc->activated();
+ sc->activatedAmbiguously();
+ delete sc;
+ QCOMPARE(myObject.activated, activated);
+ QCOMPARE(myObject.ambiguous, ambiguous);
+ };
+
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ [&myObject]() { ++myObject.activated; }),
+ 1, 0);
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ &myObject, &MyObject::onActivated),
+ 1, 0);
+ runCheck(new QShortcut(QKeySequence(), &parent,
+ &myObject, &MyObject::onActivated, &MyObject::onAmbiguous),
+ 1, 1);
+ runCheck(new QShortcut(QKeySequence(), &parent, &myObject,
+ &MyObject::onActivated, &myObject, &MyObject::onAmbiguous),
+ 1, 1);
+}
+
+
Qt::KeyboardModifiers tst_QShortcut::toButtons( int key )
{
Qt::KeyboardModifiers result = Qt::NoModifier;
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index c29d1bbe04..3f2b8bca13 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -401,6 +401,7 @@ private slots:
void tabletTracking();
void closeEvent();
+ void closeWithChildWindow();
private:
bool ensureScreenSize(int width, int height);
@@ -11173,5 +11174,27 @@ void tst_QWidget::closeEvent()
QCOMPARE(widget.closeCount, 1);
}
+void tst_QWidget::closeWithChildWindow()
+{
+ QWidget widget;
+ auto childWidget = new QWidget(&widget);
+ childWidget->setAttribute(Qt::WA_NativeWindow);
+ childWidget->windowHandle()->create();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ widget.windowHandle()->close();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ // Check that the child window inside the window is now visible
+ QVERIFY(childWidget->isVisible());
+
+ // Now explicitly hide the childWidget
+ childWidget->hide();
+ widget.windowHandle()->close();
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ QVERIFY(!childWidget->isVisible());
+}
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index eed4fe3539..cab13092cb 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -397,6 +397,31 @@ void tst_QComboBox::getSetCheck()
QCOMPARE(4, obj1.currentIndex()); // Valid
obj1.setCurrentIndex(INT_MAX);
QCOMPARE(-1, obj1.currentIndex()); // Invalid => -1
+
+ obj1.setIconSize(QSize(64, 32));
+ QCOMPARE(obj1.iconSize(), QSize(64, 32));
+ obj1.setIconSize(QSize());
+ const int iconWidth = obj1.style()->pixelMetric(QStyle::PM_SmallIconSize, nullptr, &obj1);
+ QCOMPARE(obj1.iconSize(), QSize(iconWidth, iconWidth));
+
+ const QString placeholderText("Please select");
+ obj1.setCurrentIndex(1);
+ obj1.setPlaceholderText(placeholderText);
+ QCOMPARE(obj1.placeholderText(), placeholderText);
+ QCOMPARE(obj1.currentText(), "2");
+ QCOMPARE(obj1.currentIndex(), 1);
+ obj1.setPlaceholderText(QString()); // should not change anything
+ QCOMPARE(obj1.placeholderText(), QString());
+ QCOMPARE(obj1.currentText(), "2");
+
+ obj1.clear();
+ obj1.setPlaceholderText(placeholderText);
+ obj1.addItems({"1", "2", "3", "4", "5"});
+ QCOMPARE(obj1.currentText(), placeholderText);
+ QCOMPARE(obj1.currentIndex(), -1);
+ obj1.setPlaceholderText(QString()); // should not change anything
+ QCOMPARE(obj1.currentText(), "1");
+ QCOMPARE(obj1.currentIndex(), 0);
}
typedef QList<QVariant> VariantList;
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index a8b68c18ca..957b3dfb47 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -772,6 +772,14 @@ void tst_QLineEdit::keypress_inputMask_data()
}
{
QTestEventList keys;
+ // inserting at end
+ addKeySequenceStandardKey(keys, QKeySequence::MoveToEndOfLine);
+ keys.addKeyClick(Qt::Key_Left);
+ keys.addKeyClick(Qt::Key_0);
+ QTest::newRow("insert at end") << QString("9-9-9") << keys << QString("--0") << QString(" - -0");
+ }
+ {
+ QTestEventList keys;
// inserting '12.12' then two backspaces
addKeySequenceStandardKey(keys, QKeySequence::MoveToStartOfLine);
keys.addKeyClick(Qt::Key_1);
diff --git a/tests/auto/xml/dom/qdom/tst_qdom.cpp b/tests/auto/xml/dom/qdom/tst_qdom.cpp
index 901cadc34a..86504ad51e 100644
--- a/tests/auto/xml/dom/qdom/tst_qdom.cpp
+++ b/tests/auto/xml/dom/qdom/tst_qdom.cpp
@@ -57,6 +57,7 @@ private slots:
void toString_02();
void hasAttributes_data();
void hasAttributes();
+ void setGetAttributes();
void save_data();
void save();
void saveWithSerialization() const;
@@ -392,6 +393,74 @@ void tst_QDom::hasAttributes()
QTEST( visitedNodes, "visitedNodes" );
}
+void tst_QDom::setGetAttributes()
+{
+ QDomDocument doc;
+ QDomElement rootNode = doc.createElement("Root");
+ doc.appendChild(rootNode);
+
+ const QLocale oldLocale = QLocale();
+ QLocale::setDefault(QLocale::German); // decimal separator != '.'
+
+ const QString qstringVal("QString");
+ const qlonglong qlonglongVal = std::numeric_limits<qlonglong>::min();
+ const qulonglong qulonglongVal = std::numeric_limits<qulonglong>::max();
+ const int intVal = std::numeric_limits<int>::min();
+ const uint uintVal = std::numeric_limits<uint>::max();
+ const float floatVal = 0.1234f;
+ const double doubleVal = 0.1234;
+
+ rootNode.setAttribute("qstringVal", qstringVal);
+ rootNode.setAttribute("qlonglongVal", qlonglongVal);
+ rootNode.setAttribute("qulonglongVal", qulonglongVal);
+ rootNode.setAttribute("intVal", intVal);
+ rootNode.setAttribute("uintVal", uintVal);
+ rootNode.setAttribute("floatVal", floatVal);
+ rootNode.setAttribute("doubleVal", doubleVal);
+
+ QDomElement nsNode = doc.createElement("NS");
+ rootNode.appendChild(nsNode);
+ nsNode.setAttributeNS("namespace", "qstringVal", qstringVal);
+ nsNode.setAttributeNS("namespace", "qlonglongVal", qlonglongVal);
+ nsNode.setAttributeNS("namespace", "qulonglongVal", qulonglongVal);
+ nsNode.setAttributeNS("namespace", "intVal", intVal);
+ nsNode.setAttributeNS("namespace", "uintVal", uintVal);
+ nsNode.setAttributeNS("namespace", "floatVal", floatVal); // not available atm
+ nsNode.setAttributeNS("namespace", "doubleVal", doubleVal);
+
+ bool bOk;
+ QCOMPARE(rootNode.attribute("qstringVal"), qstringVal);
+ QCOMPARE(rootNode.attribute("qlonglongVal").toLongLong(&bOk), qlonglongVal);
+ QVERIFY(bOk);
+ QCOMPARE(rootNode.attribute("qulonglongVal").toULongLong(&bOk), qulonglongVal);
+ QVERIFY(bOk);
+ QCOMPARE(rootNode.attribute("intVal").toInt(&bOk), intVal);
+ QVERIFY(bOk);
+ QCOMPARE(rootNode.attribute("uintVal").toUInt(&bOk), uintVal);
+ QVERIFY(bOk);
+ QCOMPARE(rootNode.attribute("floatVal").toFloat(&bOk), floatVal);
+ QVERIFY(bOk);
+ QCOMPARE(rootNode.attribute("doubleVal").toDouble(&bOk), doubleVal);
+ QVERIFY(bOk);
+
+ QCOMPARE(nsNode.attributeNS("namespace", "qstringVal"), qstringVal);
+ QCOMPARE(nsNode.attributeNS("namespace", "qlonglongVal").toLongLong(&bOk), qlonglongVal);
+ QVERIFY(bOk);
+ QCOMPARE(nsNode.attributeNS("namespace", "qulonglongVal").toULongLong(&bOk), qulonglongVal);
+ QVERIFY(bOk);
+ QCOMPARE(nsNode.attributeNS("namespace", "intVal").toInt(&bOk), intVal);
+ QVERIFY(bOk);
+ QCOMPARE(nsNode.attributeNS("namespace", "uintVal").toUInt(&bOk), uintVal);
+ QVERIFY(bOk);
+ QCOMPARE(nsNode.attributeNS("namespace", "floatVal").toFloat(&bOk), floatVal);
+ QVERIFY(bOk);
+ QCOMPARE(nsNode.attributeNS("namespace", "doubleVal").toDouble(&bOk), doubleVal);
+ QVERIFY(bOk);
+
+ QLocale::setDefault(oldLocale);
+}
+
+
int tst_QDom::hasAttributesHelper( const QDomNode& node )
{
int visitedNodes = 1;
diff --git a/tests/benchmarks/widgets/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h b/tests/benchmarks/widgets/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
index 7e247b63a4..1212703ddb 100644
--- a/tests/benchmarks/widgets/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
+++ b/tests/benchmarks/widgets/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
@@ -37,7 +37,7 @@ class GvbWidget : public QGraphicsWidget
public:
- GvbWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0);
+ GvbWidget(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = { });
~GvbWidget();
virtual void keyPressEvent(QKeyEvent *event);
};
diff --git a/tests/benchmarks/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp b/tests/benchmarks/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
index caf5455a80..bd7899e671 100644
--- a/tests/benchmarks/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
+++ b/tests/benchmarks/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
@@ -47,7 +47,7 @@ private slots:
class RectWidget : public QGraphicsWidget
{
public:
- RectWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0) : QGraphicsWidget(parent, wFlags), setGeometryCalls(0) {}
+ RectWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = { }) : QGraphicsWidget(parent, wFlags), setGeometryCalls(0) {}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
diff --git a/tests/libfuzzer/README b/tests/libfuzzer/README
index 57140cebfb..16e70e9bee 100644
--- a/tests/libfuzzer/README
+++ b/tests/libfuzzer/README
@@ -17,6 +17,8 @@ To run a test with libFuzzer:
install libFuzzer for this version of clang explicitly.
2. Make sure clang and clang++ from this version of clang are found in PATH.
3. Configure Qt with
+ -platform linux-clang -sanitize fuzzer-no-link
+ or, if you are using clang 5
-platform linux-clang -coverage trace-pc-guard
to add the needed code coverage instrumentation. Since speed of execution is crucial for fuzz
testing, it's recommendable to also use the switches
@@ -29,7 +31,8 @@ To run a test with libFuzzer:
Depending on the expected input format of the tested function, you will get results faster if
you:
* provide a set of interesting input data by passing the path of a directory which contains
- these data, each in one file. You can find such data sets in the subdirectory "testcases".
+ these data, each in one file. You can find such data sets in the subdirectory
+ "fuzzing/testcases" of the qtqa repository.
* pass a so-called dictionary listing keywords of the input format using
-dict=<dictionary file>
A couple of such dictionaries are provided by AFL (http://lcamtuf.coredump.cx/afl/)
diff --git a/tests/libfuzzer/gui/iccparser/main.cpp b/tests/libfuzzer/gui/iccparser/main.cpp
index 1db43d2e25..7681c1468e 100644
--- a/tests/libfuzzer/gui/iccparser/main.cpp
+++ b/tests/libfuzzer/gui/iccparser/main.cpp
@@ -29,6 +29,10 @@
#include <QGuiApplication>
#include <QColorSpace>
+// Run this with
+// QT_LOGGING_RULES="qt.gui.icc=false"
+// to reduce noise and increase speed.
+
extern "C" int LLVMFuzzerTestOneInput(const char *data, size_t size) {
static int c = 0;
static QGuiApplication a(c, nullptr);
diff --git a/tests/manual/diaglib/nativewindowdump_win.cpp b/tests/manual/diaglib/nativewindowdump_win.cpp
index aae8746413..d91e673d1c 100644
--- a/tests/manual/diaglib/nativewindowdump_win.cpp
+++ b/tests/manual/diaglib/nativewindowdump_win.cpp
@@ -32,6 +32,7 @@
#include <QtCore/QTextStream>
#include <QtCore/QSharedPointer>
#include <QtCore/QDebug>
+#include <QtCore/QRect>
#include <QtCore/QVector>
#include <QtCore/qt_windows.h>
@@ -54,14 +55,76 @@ struct DumpContext {
if (style & styleConstant) \
str << ' ' << #styleConstant;
+static QTextStream &operator<<(QTextStream &str, const QPoint &p)
+{
+ str << p.x() << ", " << p.y();
+ return str;
+}
+
+static QTextStream &operator<<(QTextStream &str, const QSize &s)
+{
+ str << s.width() << 'x' << s.height();
+ return str;
+}
+
+static QTextStream &operator<<(QTextStream &str, const QRect &rect)
+{
+ str << rect.size() << forcesign << rect.x() << rect.y() << noforcesign;
+ return str;
+}
+
+static inline QSize qsizeFromRECT(const RECT &rect)
+{
+ return QSize(rect.right -rect.left, rect.bottom - rect.top);
+}
+
+static inline QRect qrectFromRECT(const RECT &rect)
+{
+ return QRect(QPoint(rect.left, rect.top), qsizeFromRECT(rect));
+}
+
+static QRect getFrameGeometry(HWND hwnd)
+{
+ RECT rect;
+ return GetWindowRect(hwnd, &rect) ? qrectFromRECT(rect) : QRect();
+}
+
+static QPoint getClientAreaScreenPos(HWND hwnd)
+{
+ POINT clientPos{0, 0};
+ return ClientToScreen(hwnd, &clientPos) ? QPoint(clientPos.x, clientPos.y) : QPoint();
+}
+
+static QRect getClientAreaGeometry(HWND hwnd)
+{
+ RECT clientRect;
+ return GetClientRect(hwnd, &clientRect)
+ ? QRect(getClientAreaScreenPos(hwnd), qsizeFromRECT(clientRect)) : QRect();
+}
+
+static bool isTopLevel(HWND hwnd)
+{
+ auto parent = GetParent(hwnd);
+ return !parent || parent == GetDesktopWindow();
+}
+
static void formatNativeWindow(HWND hwnd, QTextStream &str)
{
str << hex << showbase << quintptr(hwnd) << noshowbase << dec;
- RECT rect;
- if (GetWindowRect(hwnd, &rect)) {
- str << ' ' << (rect.right - rect.left) << 'x' << (rect.bottom - rect.top)
- << forcesign << rect.left << rect.top << noforcesign;
+
+ const bool topLevel = isTopLevel(hwnd);
+ if (topLevel)
+ str << " [top]";
+ const auto frameGeometry = getFrameGeometry(hwnd);
+ const auto clientGeometry = getClientAreaGeometry(hwnd);
+ str << ' ' << frameGeometry;
+ if (!topLevel)
+ str << " local: " << (clientGeometry.topLeft() - getClientAreaScreenPos(GetParent(hwnd)));
+ if (clientGeometry != frameGeometry) {
+ str << " client: " << clientGeometry << " frame: "
+ << (clientGeometry.topLeft() - frameGeometry.topLeft());
}
+
if (IsWindowVisible(hwnd))
str << " [visible]";
diff --git a/tests/manual/rhi/shared/examplefw.h b/tests/manual/rhi/shared/examplefw.h
index d28bbea0a8..bfe1ee6d2b 100644
--- a/tests/manual/rhi/shared/examplefw.h
+++ b/tests/manual/rhi/shared/examplefw.h
@@ -123,9 +123,9 @@ QString graphicsApiName()
QRhi::Flags rhiFlags = QRhi::EnableDebugMarkers;
int sampleCount = 1;
-QRhiSwapChain::Flags scFlags = 0;
-QRhi::BeginFrameFlags beginFrameFlags = 0;
-QRhi::EndFrameFlags endFrameFlags = 0;
+QRhiSwapChain::Flags scFlags;
+QRhi::BeginFrameFlags beginFrameFlags;
+QRhi::EndFrameFlags endFrameFlags;
int framesUntilTdr = -1;
bool transparentBackground = false;
diff --git a/tests/manual/rhi/triquadcube/texturedcuberenderer.cpp b/tests/manual/rhi/triquadcube/texturedcuberenderer.cpp
index 8c5845d4fc..d8dea6d91f 100644
--- a/tests/manual/rhi/triquadcube/texturedcuberenderer.cpp
+++ b/tests/manual/rhi/triquadcube/texturedcuberenderer.cpp
@@ -78,7 +78,7 @@ void TexturedCubeRenderer::initResources(QRhiRenderPassDescriptor *rp)
m_ubuf->build();
m_image = QImage(QLatin1String(":/qt256.png")).convertToFormat(QImage::Format_RGBA8888);
- QRhiTexture::Flags texFlags = 0;
+ QRhiTexture::Flags texFlags;
if (MIPMAP)
texFlags |= QRhiTexture::MipMapped;
if (AUTOGENMIPMAP)
diff --git a/tests/manual/rhi/triquadcube/triangleoncuberenderer.cpp b/tests/manual/rhi/triquadcube/triangleoncuberenderer.cpp
index 250ae3a2ee..3a58eed6ce 100644
--- a/tests/manual/rhi/triquadcube/triangleoncuberenderer.cpp
+++ b/tests/manual/rhi/triquadcube/triangleoncuberenderer.cpp
@@ -158,7 +158,7 @@ void TriangleOnCubeRenderer::initResources(QRhiRenderPassDescriptor *rp)
m_ps->build();
- QRhiTextureRenderTarget::Flags rtFlags = 0;
+ QRhiTextureRenderTarget::Flags rtFlags;
if (IMAGE_UNDER_OFFSCREEN_RENDERING)
rtFlags |= QRhiTextureRenderTarget::PreserveColorContents;
diff --git a/tests/manual/windowflags/controls.cpp b/tests/manual/windowflags/controls.cpp
index c167e5f8bf..b999a59abe 100644
--- a/tests/manual/windowflags/controls.cpp
+++ b/tests/manual/windowflags/controls.cpp
@@ -95,7 +95,7 @@ HintControl::HintControl(QWidget *parent)
Qt::WindowFlags HintControl::hints() const
{
- Qt::WindowFlags flags = 0;
+ Qt::WindowFlags flags;
if (msWindowsFixedSizeDialogCheckBox->isChecked())
flags |= Qt::MSWindowsFixedSizeDialogHint;
if (x11BypassWindowManagerCheckBox->isChecked())