summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-24 01:00:42 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-24 01:00:43 +0200
commita211c240a9bf92c0a9d1c3703420eff73d4f9cd6 (patch)
treea6bca2c76dc4fc90ab64c5b09db1ca1a51367501 /tests
parent963941faae561aeadd3b3e97726d1b57e8bccf90 (diff)
parent70c053ee684448984b1f762abd3b40884cece2fa (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp110
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.lightxml9
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.tap12
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.teamcity3
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.txt6
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.xml9
-rw-r--r--tests/auto/testlib/selftests/expected_signaldumper.xunitxml10
-rw-r--r--tests/auto/testlib/selftests/signaldumper/tst_signaldumper.cpp11
-rwxr-xr-xtests/manual/rhi/shadowmap/buildshaders.sh1
9 files changed, 133 insertions, 38 deletions
diff --git a/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
index 0a84b1fdd8..5697d21547 100644
--- a/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
+++ b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
@@ -42,7 +42,11 @@ class tst_QNumeric: public QObject
private slots:
void fuzzyCompare_data();
void fuzzyCompare();
- void qNanInf();
+ void rawNaN_data();
+ void rawNaN();
+ void generalNaN_data();
+ void generalNaN();
+ void infinity();
void classifyfp();
void floatDistance_data();
void floatDistance();
@@ -53,6 +57,8 @@ private slots:
void mulOverflow_data();
void mulOverflow();
void signedOverflow();
+private:
+ void checkNaN(double nan);
};
void tst_QNumeric::fuzzyCompare_data()
@@ -92,44 +98,89 @@ void tst_QNumeric::fuzzyCompare()
# pragma GCC optimize "no-fast-math"
#endif
-void tst_QNumeric::qNanInf()
+void tst_QNumeric::checkNaN(double nan)
{
-#if defined __FAST_MATH__ && (__GNUC__ * 100 + __GNUC_MINOR__ < 404)
- QSKIP("Non-conformant fast math mode is enabled, cannot run test");
-#endif
- double nan = qQNaN();
+#define CHECKNAN(value) \
+ do { \
+ const double v = (value); \
+ QCOMPARE(qFpClassify(v), FP_NAN); \
+ QVERIFY(qIsNaN(v)); \
+ QVERIFY(!qIsFinite(v)); \
+ QVERIFY(!qIsInf(v)); \
+ } while (0)
+
QVERIFY(!(0 > nan));
QVERIFY(!(0 < nan));
QVERIFY(!(0 == nan));
QVERIFY(!(nan == nan));
- QVERIFY(qIsNaN(nan));
- QVERIFY(qIsNaN(nan + 1));
- QVERIFY(qIsNaN(-nan));
- QVERIFY(qIsNaN(1.0 / nan));
- QVERIFY(qIsNaN(0.0 / nan));
- QVERIFY(qIsNaN(0.0 * nan));
+
+ CHECKNAN(nan);
+ CHECKNAN(nan + 1);
+ CHECKNAN(nan - 1);
+ CHECKNAN(-nan);
+ CHECKNAN(nan * 2.0);
+ CHECKNAN(nan / 2.0);
+ CHECKNAN(1.0 / nan);
+ CHECKNAN(0.0 / nan);
+ CHECKNAN(0.0 * nan);
+
+ // When any NaN is expected, any NaN will do:
QCOMPARE(nan, nan);
QCOMPARE(nan, -nan);
+ QCOMPARE(nan, qQNaN());
+#undef CHECKNAN
+}
+
+void tst_QNumeric::rawNaN_data()
+{
+#if defined __FAST_MATH__ && (__GNUC__ * 100 + __GNUC_MINOR__ < 404)
+ QSKIP("Non-conformant fast math mode is enabled, cannot run test");
+#endif
+ QTest::addColumn<double>("nan");
+
+ QTest::newRow("quiet") << qQNaN();
+}
+void tst_QNumeric::rawNaN()
+{
+ QFETCH(double, nan);
+ checkNaN(nan);
+}
+
+void tst_QNumeric::generalNaN_data()
+{
+ QTest::addColumn<int>("most");
+ QTest::addColumn<int>("next");
+ QTest::addColumn<int>("least");
+ // Every value with every bit of the exponent set is a NaN.
+ // Sign and mantissa can be anything without interfering with that.
+ // The 0x7f bits of most and the 0xf0 bits of next are the exponent.
+
+ QTest::newRow("lowload") << 0x7f << 0xf0 << 1;
+ QTest::newRow("sign-lowload") << 0xff << 0xf0 << 1;
+ QTest::newRow("highload") << 0x7f << 0xf1 << 0;
+ QTest::newRow("sign-highload") << 0xff << 0xf1 << 0;
+}
+
+void tst_QNumeric::generalNaN()
+{
+ QFETCH(int, most);
+ QFETCH(int, next);
+ QFETCH(int, least);
+ double nan;
Q_STATIC_ASSERT(sizeof(double) == 8);
#ifdef Q_LITTLE_ENDIAN
- const uchar bytes[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f };
+ const uchar bytes[] = { uchar(least), 0, 0, 0, 0, 0, uchar(next), uchar(most) };
#else
- const uchar bytes[] = { 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 };
+ const uchar bytes[] = { uchar(most), uchar(next), 0, 0, 0, 0, 0, uchar(least) };
#endif
memcpy(&nan, bytes, 8);
- QVERIFY(!qIsFinite(nan));
- QVERIFY(!qIsInf(nan));
- QVERIFY(qIsNaN(nan));
- QVERIFY(qIsNaN(-nan));
- QVERIFY(!(nan == nan));
- QVERIFY(qIsNaN(0.0 * nan));
- QCOMPARE(qFpClassify(nan), FP_NAN);
- QCOMPARE(nan, nan);
- QCOMPARE(nan, -nan);
- QCOMPARE(nan, qQNaN());
+ checkNaN(nan);
+}
- double inf = qInf();
+void tst_QNumeric::infinity()
+{
+ const double inf = qInf();
QVERIFY(inf > 0);
QVERIFY(-inf < 0);
QVERIFY(qIsInf(inf));
@@ -138,16 +189,23 @@ void tst_QNumeric::qNanInf()
QVERIFY(qIsInf(-inf));
QVERIFY(qIsInf(inf + 1));
QVERIFY(qIsInf(inf - 1));
+ QVERIFY(qIsInf(-inf - 1));
+ QVERIFY(qIsInf(-inf + 1));
QVERIFY(qIsInf(inf * 2.0));
+ QVERIFY(qIsInf(-inf * 2.0));
QVERIFY(qIsInf(inf / 2.0));
+ QVERIFY(qIsInf(-inf / 2.0));
QVERIFY(qFuzzyCompare(1.0 / inf, 0.0));
QCOMPARE(1.0 / inf, 0.0);
+ QVERIFY(qFuzzyCompare(1.0 / -inf, 0.0));
+ QCOMPARE(1.0 / -inf, 0.0);
QVERIFY(qIsNaN(0.0 * inf));
+ QVERIFY(qIsNaN(0.0 * -inf));
}
void tst_QNumeric::classifyfp()
{
- QCOMPARE(qFpClassify(qQNaN()), FP_NAN);
+ // NaNs already handled, see checkNaN()'s callers.
QCOMPARE(qFpClassify(qInf()), FP_INFINITE);
QCOMPARE(qFpClassify(-qInf()), FP_INFINITE);
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.lightxml b/tests/auto/testlib/selftests/expected_signaldumper.lightxml
index f68834e1a2..443f649bb6 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.lightxml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.lightxml
@@ -568,11 +568,18 @@
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
+<TestFunction name="deletingSender">
+<Message type="info" file="" line="0">
+ <Description><![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]></Description>
+</Message>
+<Incident type="pass" file="" line="0" />
+ <Duration msecs="0"/>
+</TestFunction>
<TestFunction name="cleanupTestCase">
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
<Message type="info" file="" line="0">
- <Description><![CDATA[Signal: QThread(_POINTER_) finished ()]]></Description>
+ <Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
</Message>
<Duration msecs="0"/>
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.tap b/tests/auto/testlib/selftests/expected_signaldumper.tap
index 04d7d94745..e2d664f4f1 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.tap
+++ b/tests/auto/testlib/selftests/expected_signaldumper.tap
@@ -143,9 +143,11 @@ ok 18 - slotEmittingSignalOldSyntax(queued)
# Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
# Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
ok 19 - variousTypes()
-ok 20 - cleanupTestCase()
-# Signal: QThread(_POINTER_) finished ()
-1..20
-# tests 20
-# pass 20
+# Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
+ok 20 - deletingSender()
+ok 21 - cleanupTestCase()
+# Signal: QThread(_POINTER_) finished ()
+1..21
+# tests 21
+# pass 21
# fail 0
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.teamcity b/tests/auto/testlib/selftests/expected_signaldumper.teamcity
index 3b8cf8c54f..0fc568e086 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.teamcity
+++ b/tests/auto/testlib/selftests/expected_signaldumper.teamcity
@@ -56,6 +56,9 @@
##teamcity[testStarted name='variousTypes()' flowId='tst_Signaldumper']
##teamcity[testStdOut name='variousTypes()' out='INFO: Signal: SignalSlotClass(_POINTER_) qStringSignal (QString(Test string))|nINFO: Signal: SignalSlotClass(_POINTER_) qStringRefSignal ((QString&)@_POINTER_)|nINFO: Signal: SignalSlotClass(_POINTER_) qStringConstRefSignal (QString(Test string))|nINFO: Signal: SignalSlotClass(_POINTER_) qByteArraySignal (QByteArray(Test bytearray))|nINFO: Signal: SignalSlotClass(_POINTER_) qListSignal (QList<int>())|nINFO: Signal: SignalSlotClass(_POINTER_) qVectorSignal (QVector<int>())|nINFO: Signal: SignalSlotClass(_POINTER_) qVectorRefSignal ((QVector<int>&)@_POINTER_)|nINFO: Signal: SignalSlotClass(_POINTER_) qVectorConstRefSignal (QVector<int>())|nINFO: Signal: SignalSlotClass(_POINTER_) qVectorConstPointerSignal ((const QVector<int>*)_POINTER_)|nINFO: Signal: SignalSlotClass(_POINTER_) qVectorPointerConstSignal ()|nINFO: Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())|nINFO: Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())' flowId='tst_Signaldumper']
##teamcity[testFinished name='variousTypes()' flowId='tst_Signaldumper']
+##teamcity[testStarted name='deletingSender()' flowId='tst_Signaldumper']
+##teamcity[testStdOut name='deletingSender()' out='INFO: Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()' flowId='tst_Signaldumper']
+##teamcity[testFinished name='deletingSender()' flowId='tst_Signaldumper']
##teamcity[testStarted name='cleanupTestCase()' flowId='tst_Signaldumper']
##teamcity[testFinished name='cleanupTestCase()' flowId='tst_Signaldumper']
##teamcity[testSuiteFinished name='tst_Signaldumper' flowId='tst_Signaldumper']
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.txt b/tests/auto/testlib/selftests/expected_signaldumper.txt
index f89c31afe5..0ee8cd38a2 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.txt
+++ b/tests/auto/testlib/selftests/expected_signaldumper.txt
@@ -143,7 +143,9 @@ INFO : tst_Signaldumper::variousTypes() Signal: SignalSlotClass(_POINTER_) qVe
INFO : tst_Signaldumper::variousTypes() Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
INFO : tst_Signaldumper::variousTypes() Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())
PASS : tst_Signaldumper::variousTypes()
+INFO : tst_Signaldumper::deletingSender() Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()
+PASS : tst_Signaldumper::deletingSender()
PASS : tst_Signaldumper::cleanupTestCase()
-INFO : tst_Signaldumper::UnknownTestFunc() Signal: QThread(_POINTER_) finished ()
-Totals: 20 passed, 0 failed, 0 skipped, 0 blacklisted, 0ms
+INFO : tst_Signaldumper::UnknownTestFunc() Signal: QThread(_POINTER_) finished ()
+Totals: 21 passed, 0 failed, 0 skipped, 0 blacklisted, 0ms
********* Finished testing of tst_Signaldumper *********
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.xml b/tests/auto/testlib/selftests/expected_signaldumper.xml
index 82959c62df..f11a0c3ce6 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.xml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.xml
@@ -570,12 +570,19 @@
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
+<TestFunction name="deletingSender">
+<Message type="info" file="" line="0">
+ <Description><![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]></Description>
+</Message>
+<Incident type="pass" file="" line="0" />
+ <Duration msecs="0"/>
+</TestFunction>
<TestFunction name="cleanupTestCase">
<Incident type="pass" file="" line="0" />
<Duration msecs="0"/>
</TestFunction>
<Message type="info" file="" line="0">
- <Description><![CDATA[Signal: QThread(_POINTER_) finished ()]]></Description>
+ <Description><![CDATA[ Signal: QThread(_POINTER_) finished ()]]></Description>
</Message>
<Duration msecs="0"/>
</TestCase>
diff --git a/tests/auto/testlib/selftests/expected_signaldumper.xunitxml b/tests/auto/testlib/selftests/expected_signaldumper.xunitxml
index 930dc97262..cbf7075ba1 100644
--- a/tests/auto/testlib/selftests/expected_signaldumper.xunitxml
+++ b/tests/auto/testlib/selftests/expected_signaldumper.xunitxml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="125" failures="0" tests="12" name="tst_Signaldumper">
+<testsuite errors="126" failures="0" tests="13" name="tst_Signaldumper">
<properties>
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
@@ -151,8 +151,11 @@
<!-- message="Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())" type="info" -->
<!-- message="Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())" type="info" -->
</testcase>
+ <testcase result="pass" name="deletingSender">
+ <!-- message="Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()" type="info" -->
+ </testcase>
<testcase result="pass" name="cleanupTestCase">
- <!-- message="Signal: QThread(_POINTER_) finished ()" type="info" -->
+ <!-- message=" Signal: QThread(_POINTER_) finished ()" type="info" -->
</testcase>
<system-err>
<![CDATA[Signal: QThread(_POINTER_) started ()]]>
@@ -279,6 +282,7 @@
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVectorPointerConstSignal ()]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())]]>
<![CDATA[Signal: SignalSlotClass(_POINTER_) qVariantSignal (QVariant())]]>
-<![CDATA[Signal: QThread(_POINTER_) finished ()]]>
+<![CDATA[Signal: SignalSlotClass(_POINTER_) signalWithoutParameters ()]]>
+<![CDATA[ Signal: QThread(_POINTER_) finished ()]]>
</system-err>
</testsuite>
diff --git a/tests/auto/testlib/selftests/signaldumper/tst_signaldumper.cpp b/tests/auto/testlib/selftests/signaldumper/tst_signaldumper.cpp
index f6cd0d510e..08592e222d 100644
--- a/tests/auto/testlib/selftests/signaldumper/tst_signaldumper.cpp
+++ b/tests/auto/testlib/selftests/signaldumper/tst_signaldumper.cpp
@@ -56,6 +56,8 @@ private slots:
void slotEmittingSignalOldSyntax();
void variousTypes();
+
+ void deletingSender();
};
void tst_Signaldumper::addConnectionTypeData()
@@ -413,5 +415,14 @@ void tst_Signaldumper::variousTypes()
emit signalSlotOwner.qVariantSignal(variant);
}
+void tst_Signaldumper::deletingSender()
+{
+ SignalSlotClass *signalSlotOwner = new SignalSlotClass();
+ connect(signalSlotOwner, &SignalSlotClass::signalWithoutParameters, [signalSlotOwner]() {
+ delete signalSlotOwner;
+ });
+ emit signalSlotOwner->signalWithoutParameters();
+}
+
QTEST_MAIN(tst_Signaldumper)
#include "tst_signaldumper.moc"
diff --git a/tests/manual/rhi/shadowmap/buildshaders.sh b/tests/manual/rhi/shadowmap/buildshaders.sh
index c4d17841e6..8991bb074a 100755
--- a/tests/manual/rhi/shadowmap/buildshaders.sh
+++ b/tests/manual/rhi/shadowmap/buildshaders.sh
@@ -1,3 +1,4 @@
+#!/bin/sh
qsb --glsl "120,300 es" --hlsl 50 --msl 12 shadowmap.vert -o shadowmap.vert.qsb
qsb --glsl "120,300 es" --hlsl 50 --msl 12 shadowmap.frag -o shadowmap.frag.qsb
qsb --glsl "120,300 es" --hlsl 50 --msl 12 main.vert -o main.vert.qsb