summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-02-27 14:22:01 +0100
committerLars Knoll <lars.knoll@qt.io>2020-02-27 19:35:43 +0100
commitbb802b4318e88e47d3f2c446bb9641f53efbaaed (patch)
tree57c49702d32a0b9ef4426bb0c1ec9a272dbcf94d /tests/auto
parent924b97d6abf6f9935c9698984a1596c65324e3fa (diff)
parent5c6c0289f09d9bf18aaa35eed792e40840af5dce (diff)
Merge "Merge remote-tracking branch 'origin/5.14' into 5.15"
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp23
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp6
-rw-r--r--tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp24
3 files changed, 49 insertions, 4 deletions
diff --git a/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp b/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp
index 4e105d7dc7..35c5e7cb75 100644
--- a/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp
+++ b/tests/auto/corelib/kernel/qdeadlinetimer/tst_qdeadlinetimer.cpp
@@ -580,11 +580,26 @@ void tst_QDeadlineTimer::stdchrono()
auto now = QDeadlineTimer::current(timerType);
QTest::qSleep(minResolution);
+ auto sampling_start = steady_clock::now();
+ auto steady_deadline = now.deadline<steady_clock>();
+ auto system_deadline = now.deadline<system_clock>();
auto steady_after = steady_clock::now();
auto system_after = system_clock::now();
+ auto sampling_end = steady_clock::now();
+
+ auto sampling_diff = duration_cast<milliseconds>(sampling_end - sampling_start).count();
+ if (sampling_diff > minResolution/2) {
+ qWarning() << "Sampling clock took" << sampling_diff << "ms";
+ QSKIP("Sampling clock took too long, aborting test", Abort);
+ }
+ auto total_diff = duration_cast<milliseconds>(steady_after - steady_before).count();
+ if (total_diff >= 3*minResolution) {
+ qWarning() << "Measurement took" << total_diff << "ms";
+ QSKIP("Measurement took too long, aborting test", Abort);
+ }
{
- auto diff = duration_cast<milliseconds>(steady_after - now.deadline<steady_clock>());
+ auto diff = duration_cast<milliseconds>(steady_after - steady_deadline);
QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count())));
QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count())));
QDeadlineTimer dt_after(steady_after, timerType);
@@ -592,7 +607,7 @@ void tst_QDeadlineTimer::stdchrono()
("now = " + QLocale().toString(now.deadlineNSecs()) +
"; after = " + QLocale().toString(dt_after.deadlineNSecs())).toLatin1());
- diff = duration_cast<milliseconds>(now.deadline<steady_clock>() - steady_before);
+ diff = duration_cast<milliseconds>(steady_deadline - steady_before);
QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count())));
QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count())));
QDeadlineTimer dt_before(steady_before, timerType);
@@ -601,7 +616,7 @@ void tst_QDeadlineTimer::stdchrono()
"; before = " + QLocale().toString(dt_before.deadlineNSecs())).toLatin1());
}
{
- auto diff = duration_cast<milliseconds>(system_after - now.deadline<system_clock>());
+ auto diff = duration_cast<milliseconds>(system_after - system_deadline);
QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count())));
QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count())));
QDeadlineTimer dt_after(system_after, timerType);
@@ -609,7 +624,7 @@ void tst_QDeadlineTimer::stdchrono()
("now = " + QLocale().toString(now.deadlineNSecs()) +
"; after = " + QLocale().toString(dt_after.deadlineNSecs())).toLatin1());
- diff = duration_cast<milliseconds>(now.deadline<system_clock>() - system_before);
+ diff = duration_cast<milliseconds>(system_deadline - system_before);
QVERIFY2(diff.count() > minResolution/2, QByteArray::number(qint64(diff.count())));
QVERIFY2(diff.count() < 3*minResolution/2, QByteArray::number(qint64(diff.count())));
QDeadlineTimer dt_before(system_before, timerType);
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 21615d6ec4..63d06497ce 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -7462,6 +7462,12 @@ void tst_QObject::checkArgumentsForNarrowing()
FITS(bool, const QObject *&);
FITS(int (*)(bool), void (QObject::*)());
+ {
+ // wg21.link/P1957
+ NARROWS(char*, bool);
+ NARROWS(void (QObject::*)(), bool);
+ }
+
#undef IS_UNSCOPED_ENUM_SIGNED
#undef NARROWS_IF
diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
index a0e8525268..6fe3e20083 100644
--- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
@@ -59,6 +59,7 @@ private slots:
void mnemonicTextWidth();
void leadingBelowLine();
void elidedMetrics();
+ void zeroWidthMetrics();
};
void tst_QFontMetrics::same()
@@ -358,5 +359,28 @@ void tst_QFontMetrics::elidedMetrics()
QFontDatabase::removeApplicationFont(id);
}
+void tst_QFontMetrics::zeroWidthMetrics()
+{
+ QString zwnj(QChar(0x200c));
+ QString zwsp(QChar(0x200b));
+
+ QFont font;
+ QFontMetricsF fm(font);
+ QCOMPARE(fm.horizontalAdvance(zwnj), 0);
+ QCOMPARE(fm.horizontalAdvance(zwsp), 0);
+ QCOMPARE(fm.boundingRect(zwnj).width(), 0);
+ QCOMPARE(fm.boundingRect(zwsp).width(), 0);
+
+ QString string1 = QStringLiteral("(") + zwnj + QStringLiteral(")");
+ QString string2 = QStringLiteral("(") + zwnj + zwnj + QStringLiteral(")");
+ QString string3 = QStringLiteral("(") + zwsp + QStringLiteral(")");
+ QString string4 = QStringLiteral("(") + zwsp + zwsp + QStringLiteral(")");
+
+ QCOMPARE(fm.horizontalAdvance(string1), fm.horizontalAdvance(string2));
+ QCOMPARE(fm.horizontalAdvance(string3), fm.horizontalAdvance(string4));
+ QCOMPARE(fm.boundingRect(string1).width(), fm.boundingRect(string2).width());
+ QCOMPARE(fm.boundingRect(string3).width(), fm.boundingRect(string4).width());
+}
+
QTEST_MAIN(tst_QFontMetrics)
#include "tst_qfontmetrics.moc"