summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp43
-rw-r--r--tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp7
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp35
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp34
-rw-r--r--tests/auto/gui/painting/qbrush/tst_qbrush.cpp2
-rw-r--r--tests/auto/network/kernel/qhostinfo/BLACKLIST2
-rw-r--r--tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp68
-rw-r--r--tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp59
-rw-r--r--tests/manual/dialogs/filedialogpanel.cpp9
9 files changed, 203 insertions, 56 deletions
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
index 5d344834e6..279ee2e8a0 100644
--- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
@@ -952,29 +952,42 @@ void tst_QLocale::stringToDouble()
void tst_QLocale::stringToFloat_data()
{
+ using Bounds = std::numeric_limits<float>;
toReal_data();
- if (std::numeric_limits<float>::has_infinity) {
- double huge = std::numeric_limits<float>::infinity();
- QTest::newRow("C inf") << QString("C") << QString("inf") << true << huge;
- QTest::newRow("C +inf") << QString("C") << QString("+inf") << true << +huge;
- QTest::newRow("C -inf") << QString("C") << QString("-inf") << true << -huge;
+ const QString C(QStringLiteral("C"));
+ if (Bounds::has_infinity) {
+ double huge = Bounds::infinity();
+ QTest::newRow("C inf") << C << QString("inf") << true << huge;
+ QTest::newRow("C +inf") << C << QString("+inf") << true << +huge;
+ QTest::newRow("C -inf") << C << QString("-inf") << true << -huge;
// Overflow float, but not double:
- QTest::newRow("C big") << QString("C") << QString("3.5e38") << false << huge;
- QTest::newRow("C -big") << QString("C") << QString("-3.5e38") << false << -huge;
+ QTest::newRow("C big") << C << QString("3.5e38") << false << huge;
+ QTest::newRow("C -big") << C << QString("-3.5e38") << false << -huge;
// Overflow double, too:
- QTest::newRow("C huge") << QString("C") << QString("2e308") << false << huge;
- QTest::newRow("C -huge") << QString("C") << QString("-2e308") << false << -huge;
+ QTest::newRow("C huge") << C << QString("2e308") << false << huge;
+ QTest::newRow("C -huge") << C << QString("-2e308") << false << -huge;
}
- if (std::numeric_limits<float>::has_quiet_NaN)
- QTest::newRow("C qnan") << QString("C") << QString("NaN") << true << double(std::numeric_limits<float>::quiet_NaN());
+ if (Bounds::has_quiet_NaN)
+ QTest::newRow("C qnan") << C << QString("NaN") << true << double(Bounds::quiet_NaN());
+
+ // Minimal float: shouldn't underflow
+ QTest::newRow("C float min")
+ << C << QLocale::c().toString(Bounds::denorm_min()) << true << double(Bounds::denorm_min());
+ QTest::newRow("C float -min")
+ << C << QLocale::c().toString(-Bounds::denorm_min()) << true << -double(Bounds::denorm_min());
// Underflow float, but not double:
- QTest::newRow("C small") << QString("C") << QString("1e-45") << false << 0.;
- QTest::newRow("C -small") << QString("C") << QString("-1e-45") << false << 0.;
+ QTest::newRow("C small") << C << QString("7e-46") << false << 0.;
+ QTest::newRow("C -small") << C << QString("-7e-46") << false << 0.;
+ using Double = std::numeric_limits<double>;
+ QTest::newRow("C double min")
+ << C << QLocale::c().toString(Double::denorm_min()) << false << 0.0;
+ QTest::newRow("C double -min")
+ << C << QLocale::c().toString(-Double::denorm_min()) << false << 0.0;
// Underflow double, too:
- QTest::newRow("C tiny") << QString("C") << QString("2e-324") << false << 0.;
- QTest::newRow("C -tiny") << QString("C") << QString("-2e-324") << false << 0.;
+ QTest::newRow("C tiny") << C << QString("2e-324") << false << 0.;
+ QTest::newRow("C -tiny") << C << QString("-2e-324") << false << 0.;
}
void tst_QLocale::stringToFloat()
diff --git a/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp b/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp
index eff9835776..bb6c48a2ed 100644
--- a/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp
+++ b/tests/auto/corelib/tools/qtimezone/tst_qtimezone.cpp
@@ -539,8 +539,13 @@ void tst_QTimeZone::checkOffset_data()
int year, month, day, hour, min, sec;
int std, dst;
} table[] = {
- // Zone with no transitions (QTBUG-74614, when TZ backend uses minimalist data)
+ // Zone with no transitions (QTBUG-74614, QTBUG-74666, when TZ backend uses minimal data)
{ "Etc/UTC", "epoch", 1970, 1, 1, 0, 0, 0, 0, 0 },
+ { "Etc/UTC", "pre_int32", 1901, 12, 13, 20, 45, 51, 0, 0 },
+ { "Etc/UTC", "post_int32", 2038, 1, 19, 3, 14, 9, 0, 0 },
+ { "Etc/UTC", "post_uint32", 2106, 2, 7, 6, 28, 17, 0, 0 },
+ { "Etc/UTC", "initial", -292275056, 5, 16, 16, 47, 5, 0, 0 },
+ { "Etc/UTC", "final", 292278994, 8, 17, 7, 12, 55, 0, 0 },
// Kiev: regression test for QTBUG-64122 (on MS):
{ "Europe/Kiev", "summer", 2017, 10, 27, 12, 0, 0, 2 * 3600, 3600 },
{ "Europe/Kiev", "winter", 2017, 10, 29, 12, 0, 0, 2 * 3600, 0 }
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp
index 6bc27a6e16..bb81b9f61f 100644
--- a/tests/auto/gui/image/qimage/tst_qimage.cpp
+++ b/tests/auto/gui/image/qimage/tst_qimage.cpp
@@ -3260,11 +3260,46 @@ void tst_QImage::metadataPassthrough()
QCOMPARE(mirrored.dotsPerMeterY(), a.dotsPerMeterY());
QCOMPARE(mirrored.devicePixelRatio(), a.devicePixelRatio());
+ QTransform t;
+ t.rotate(90);
+ QImage rotated = a.transformed(t);
+ QCOMPARE(rotated.text(QStringLiteral("Test")), a.text(QStringLiteral("Test")));
+ QCOMPARE(rotated.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(rotated.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(rotated.devicePixelRatio(), a.devicePixelRatio());
+
QImage swapped = a.rgbSwapped();
QCOMPARE(swapped.text(QStringLiteral("Test")), a.text(QStringLiteral("Test")));
QCOMPARE(swapped.dotsPerMeterX(), a.dotsPerMeterX());
QCOMPARE(swapped.dotsPerMeterY(), a.dotsPerMeterY());
QCOMPARE(swapped.devicePixelRatio(), a.devicePixelRatio());
+
+ QImage converted = a.convertToFormat(QImage::Format_RGB32);
+ QCOMPARE(converted.text(QStringLiteral("Test")), a.text(QStringLiteral("Test")));
+ QCOMPARE(converted.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(converted.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(converted.devicePixelRatio(), a.devicePixelRatio());
+
+ QImage copied = a.copy(0, 0, a.width() / 2, a.height() / 2);
+ QCOMPARE(copied.text(QStringLiteral("Test")), a.text(QStringLiteral("Test")));
+ QCOMPARE(copied.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(copied.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(copied.devicePixelRatio(), a.devicePixelRatio());
+
+ QImage alphaMask = a.createAlphaMask();
+ QCOMPARE(alphaMask.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(alphaMask.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(alphaMask.devicePixelRatio(), a.devicePixelRatio());
+
+ QImage heuristicMask = a.createHeuristicMask();
+ QCOMPARE(heuristicMask.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(heuristicMask.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(heuristicMask.devicePixelRatio(), a.devicePixelRatio());
+
+ QImage maskFromColor = a.createMaskFromColor(qRgb(0, 0, 0));
+ QCOMPARE(maskFromColor.dotsPerMeterX(), a.dotsPerMeterX());
+ QCOMPARE(maskFromColor.dotsPerMeterY(), a.dotsPerMeterY());
+ QCOMPARE(maskFromColor.devicePixelRatio(), a.devicePixelRatio());
}
void tst_QImage::pixelColor()
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index 9a338ad55a..4d31d80246 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -121,6 +121,7 @@ private slots:
void copy();
void deepCopyPreservesDpr();
+ void dprPassthrough();
void depthOfNullObjects();
void transformed();
@@ -1169,6 +1170,39 @@ void tst_QPixmap::deepCopyPreservesDpr()
QCOMPARE(dest.devicePixelRatio(), dpr);
}
+void tst_QPixmap::dprPassthrough()
+{
+ const qreal dpr = 2;
+ QPixmap src(32, 32);
+ src.setDevicePixelRatio(dpr);
+ src.fill(Qt::transparent);
+ QCOMPARE(src.devicePixelRatio(), dpr);
+
+ QImage img = src.toImage();
+ QCOMPARE(img.devicePixelRatio(), dpr);
+
+ QPixmap pm(1, 1);
+ pm.convertFromImage(img);
+ QCOMPARE(pm.devicePixelRatio(), dpr);
+
+ QBitmap heuristicMask = src.createHeuristicMask();
+ QCOMPARE(heuristicMask.devicePixelRatio(), dpr);
+
+ QBitmap maskFromColor = src.createMaskFromColor(Qt::white);
+ QCOMPARE(maskFromColor.devicePixelRatio(), dpr);
+
+ QBitmap mask = src.mask();
+ QCOMPARE(mask.devicePixelRatio(), dpr);
+
+ QPixmap scaled = src.scaled(16, 16);
+ QCOMPARE(scaled.devicePixelRatio(), dpr);
+
+ QTransform t;
+ t.rotate(90);
+ QPixmap transformed = src.transformed(t);
+ QCOMPARE(transformed.devicePixelRatio(), dpr);
+}
+
void tst_QPixmap::depthOfNullObjects()
{
QBitmap b1;
diff --git a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
index cd3eaa1478..ce6ce15767 100644
--- a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
+++ b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
@@ -345,6 +345,8 @@ void tst_QBrush::gradientPresets()
QGradient invalidPreset(QGradient::Preset(-1));
QCOMPARE(invalidPreset.type(), QGradient::NoGradient);
+ QBrush brush(invalidPreset);
+ QCOMPARE(brush.style(), Qt::NoBrush);
}
void fill(QPaintDevice *pd) {
diff --git a/tests/auto/network/kernel/qhostinfo/BLACKLIST b/tests/auto/network/kernel/qhostinfo/BLACKLIST
index cd4d4eb03c..87c5fe991f 100644
--- a/tests/auto/network/kernel/qhostinfo/BLACKLIST
+++ b/tests/auto/network/kernel/qhostinfo/BLACKLIST
@@ -4,5 +4,3 @@
windows ci
[blockingLookup:a-plus-aaaa]
windows ci
-[reverseLookup:google-public-dns-a.google.com]
-ci
diff --git a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
index 82825f608c..0a130d363e 100644
--- a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
+++ b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
@@ -396,6 +396,68 @@ void tst_QHostInfo::lookupConnectToLambda()
QCOMPARE(tmp.join(' '), expected.join(' '));
}
+static QStringList reverseLookupHelper(const QString &ip)
+{
+ QStringList results;
+
+ const QString pythonCode =
+ "import socket;"
+ "import sys;"
+ "print (socket.getnameinfo((sys.argv[1], 0), 0)[0]);";
+
+ QList<QByteArray> lines;
+ QProcess python;
+ python.setProcessChannelMode(QProcess::ForwardedErrorChannel);
+ python.start("python", QStringList() << QString("-c") << pythonCode << ip);
+ if (python.waitForFinished()) {
+ if (python.exitStatus() == QProcess::NormalExit && python.exitCode() == 0)
+ lines = python.readAllStandardOutput().split('\n');
+ for (QByteArray line : lines) {
+ if (!line.isEmpty())
+ results << line.trimmed();
+ }
+ if (!results.isEmpty())
+ return results;
+ }
+
+ qDebug() << "Python failed, falling back to nslookup";
+ QProcess lookup;
+ lookup.setProcessChannelMode(QProcess::ForwardedErrorChannel);
+ lookup.start("nslookup", QStringList(ip));
+ if (!lookup.waitForFinished()) {
+ results << "nslookup failure";
+ qDebug() << "nslookup failure";
+ return results;
+ }
+ lines = lookup.readAllStandardOutput().split('\n');
+
+ QByteArray name;
+
+ const QByteArray nameMarkerNix("name =");
+ const QByteArray nameMarkerWin("Name:");
+ const QByteArray addressMarkerWin("Address:");
+
+ for (QByteArray line : lines) {
+ int index = -1;
+ if ((index = line.indexOf(nameMarkerNix)) != -1) { // Linux and macOS
+ name = line.mid(index + nameMarkerNix.length()).chopped(1).trimmed();
+ results << name;
+ } else if (line.startsWith(nameMarkerWin)) { // Windows formatting
+ name = line.mid(line.lastIndexOf(" ")).trimmed();
+ } else if (line.startsWith(addressMarkerWin)) {
+ QByteArray address = line.mid(addressMarkerWin.length()).trimmed();
+ if (address == ip) {
+ results << name;
+ }
+ }
+ }
+
+ if (results.isEmpty()) {
+ qDebug() << "Failure to parse nslookup output: " << lines;
+ }
+ return results;
+}
+
void tst_QHostInfo::reverseLookup_data()
{
QTest::addColumn<QString>("address");
@@ -403,8 +465,8 @@ void tst_QHostInfo::reverseLookup_data()
QTest::addColumn<int>("err");
QTest::addColumn<bool>("ipv6");
- QTest::newRow("google-public-dns-a.google.com") << QString("8.8.8.8") << QStringList(QString("google-public-dns-a.google.com")) << 0 << false;
- QTest::newRow("gitorious.org") << QString("87.238.52.168") << QStringList(QString("gitorious.org")) << 0 << false;
+ QTest::newRow("dns.google") << QString("8.8.8.8") << reverseLookupHelper("8.8.8.8") << 0 << false;
+ QTest::newRow("one.one.one.one") << QString("1.1.1.1") << reverseLookupHelper("1.1.1.1") << 0 << false;
QTest::newRow("bogus-name") << QString("1::2::3::4") << QStringList() << 1 << true;
}
@@ -422,6 +484,8 @@ void tst_QHostInfo::reverseLookup()
QHostInfo info = QHostInfo::fromName(address);
if (err == 0) {
+ if (!hostNames.contains(info.hostName()))
+ qDebug() << "Failure: expecting" << hostNames << ",got " << info.hostName();
QVERIFY(hostNames.contains(info.hostName()));
QCOMPARE(info.addresses().first(), QHostAddress(address));
} else {
diff --git a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
index 4cc1810cd4..f4b91265a4 100644
--- a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
+++ b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
@@ -59,25 +59,22 @@ class tst_QSizeGrip : public QObject
{
Q_OBJECT
public slots:
- void initTestCase();
- void cleanupTestCase();
+ void cleanup();
private slots:
void hideAndShowOnWindowStateChange_data();
void hideAndShowOnWindowStateChange();
void orientation();
void dontCrashOnTLWChange();
-
-private:
- QLineEdit *dummyWidget;
};
class TestWidget : public QWidget
{
public:
- TestWidget(QWidget *parent = 0, Qt::WindowFlags flags = 0) : QWidget(parent, flags) {}
- QSize sizeHint() const { return QSize(300, 200); }
- void changeEvent(QEvent *event)
+ using QWidget::QWidget;
+
+ QSize sizeHint() const override { return QSize(300, 200); }
+ void changeEvent(QEvent *event) override
{
QWidget::changeEvent(event);
if (isWindow() && event->type() == QEvent::WindowStateChange)
@@ -85,16 +82,9 @@ public:
}
};
-void tst_QSizeGrip::initTestCase()
-{
- dummyWidget = new QLineEdit;
- dummyWidget->show();
-}
-
-void tst_QSizeGrip::cleanupTestCase()
+void tst_QSizeGrip::cleanup()
{
- delete dummyWidget;
- dummyWidget = 0;
+ QVERIFY(QApplication::topLevelWidgets().isEmpty());
}
void tst_QSizeGrip::hideAndShowOnWindowStateChange_data()
@@ -111,46 +101,45 @@ void tst_QSizeGrip::hideAndShowOnWindowStateChange()
QSKIP("Broken on WinRT - QTBUG-68297");
#endif
- QWidget *parentWidget = windowType == Qt::Window ? 0 : new QWidget;
- TestWidget *widget = new TestWidget(parentWidget, Qt::WindowFlags(windowType));
- QSizeGrip *sizeGrip = new QSizeGrip(widget);
+ QScopedPointer<QWidget> parentWidget;
+ if (windowType != Qt::Window)
+ parentWidget.reset(new QWidget);
+ QScopedPointer<TestWidget> widget(new TestWidget(parentWidget.data(), Qt::WindowFlags(windowType)));
+ QSizeGrip *sizeGrip = new QSizeGrip(widget.data());
// Normal.
if (parentWidget)
parentWidget->show();
else
widget->show();
- QVERIFY(sizeGrip->isVisible());
+ QTRY_VERIFY(sizeGrip->isVisible());
widget->showFullScreen();
- QVERIFY(!sizeGrip->isVisible());
+ QTRY_VERIFY(!sizeGrip->isVisible());
widget->showNormal();
- QVERIFY(sizeGrip->isVisible());
+ QTRY_VERIFY(sizeGrip->isVisible());
widget->showMaximized();
#ifndef Q_OS_MAC
- QVERIFY(!sizeGrip->isVisible());
+ QTRY_VERIFY(!sizeGrip->isVisible());
#else
QEXPECT_FAIL("", "QTBUG-23681", Abort);
QVERIFY(sizeGrip->isVisible());
#endif
widget->showNormal();
- QVERIFY(sizeGrip->isVisible());
+ QTRY_VERIFY(sizeGrip->isVisible());
sizeGrip->hide();
- QVERIFY(!sizeGrip->isVisible());
+ QTRY_VERIFY(!sizeGrip->isVisible());
widget->showFullScreen();
widget->showNormal();
- QVERIFY(!sizeGrip->isVisible());
+ QTRY_VERIFY(!sizeGrip->isVisible());
widget->showMaximized();
widget->showNormal();
- QVERIFY(!sizeGrip->isVisible());
-
- delete widget;
- delete parentWidget;
+ QTRY_VERIFY(!sizeGrip->isVisible());
}
void tst_QSizeGrip::orientation()
@@ -196,10 +185,10 @@ void tst_QSizeGrip::dontCrashOnTLWChange()
QMdiArea mdiArea;
mdiArea.show();
- QMainWindow *mw = new QMainWindow();
- QMdiSubWindow *mdi = mdiArea.addSubWindow(mw);
+ QScopedPointer<QMainWindow> mw(new QMainWindow);
+ QMdiSubWindow *mdi = mdiArea.addSubWindow(mw.data());
mw->statusBar()->setSizeGripEnabled(true);
- mdiArea.removeSubWindow(mw);
+ mdiArea.removeSubWindow(mw.data());
delete mdi;
mw->show();
@@ -209,7 +198,7 @@ void tst_QSizeGrip::dontCrashOnTLWChange()
QEXPECT_FAIL("", "Broken on WinRT - QTBUG-68297", Abort);
#endif
QVERIFY(QTest::qWaitForWindowExposed(&mdiArea));
- QVERIFY(QTest::qWaitForWindowExposed(mw));
+ QVERIFY(QTest::qWaitForWindowExposed(mw.data()));
}
QTEST_MAIN(tst_QSizeGrip)
diff --git a/tests/manual/dialogs/filedialogpanel.cpp b/tests/manual/dialogs/filedialogpanel.cpp
index 9e3c761cff..62d03e735d 100644
--- a/tests/manual/dialogs/filedialogpanel.cpp
+++ b/tests/manual/dialogs/filedialogpanel.cpp
@@ -505,8 +505,15 @@ void FileDialogPanel::accepted()
Q_ASSERT(d);
m_result.clear();
QDebug(&m_result).nospace()
+#if QT_VERSION >= 0x050000
+ << "URLs: " << d->selectedUrls() << '\n'
+#endif
<< "Files: " << d->selectedFiles()
- << "\nDirectory: " << d->directory().absolutePath()
+ << "\nDirectory: "
+#if QT_VERSION >= 0x050000
+ << d->directoryUrl() << ", "
+#endif
+ << d->directory().absolutePath()
<< "\nName filter: " << d->selectedNameFilter();
QTimer::singleShot(0, this, SLOT(showAcceptedResult())); // Avoid problems with the closing (modal) dialog as parent.
}