diff options
-rw-r--r-- | src/testlib/qtest.h | 7 | ||||
-rw-r--r-- | src/testlib/qtestcase.cpp | 14 | ||||
-rw-r--r-- | src/testlib/qtestcase.h | 2 | ||||
-rw-r--r-- | tests/auto/corelib/tools/qstringview/tst_qstringview.cpp | 14 |
4 files changed, 28 insertions, 9 deletions
diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h index 30aadfba92..4abba93721 100644 --- a/src/testlib/qtest.h +++ b/src/testlib/qtest.h @@ -65,9 +65,14 @@ QT_BEGIN_NAMESPACE namespace QTest { +template <> inline char *toString(const QStringView &str) +{ + return QTest::toPrettyUnicode(str); +} + template<> inline char *toString(const QString &str) { - return QTest::toPrettyUnicode(reinterpret_cast<const ushort *>(str.constData()), str.length()); + return toString(QStringView(str)); } template<> inline char *toString(const QLatin1String &str) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 8b0820b941..1470f3cf91 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -1271,6 +1271,16 @@ char *toPrettyCString(const char *p, int length) return buffer.take(); } +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) +// this used to be the signature up to and including Qt 5.9 +// keep it for BC reasons: +Q_TESTLIB_EXPORT +char *toPrettyUnicode(const ushort *p, int length) +{ + return toPrettyUnicode(QStringView(p, length)); +} +#endif + /*! \internal Returns the same QString but with only the ASCII characters still shown; @@ -1278,8 +1288,10 @@ char *toPrettyCString(const char *p, int length) Similar to QDebug::putString(). */ -char *toPrettyUnicode(const ushort *p, int length) +char *toPrettyUnicode(QStringView string) { + auto p = reinterpret_cast<const ushort *>(string.utf16()); + auto length = string.size(); // keep it simple for the vast majority of cases bool trimmed = false; QScopedArrayPointer<char> buffer(new char[256]); diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h index 3e2dab307a..1b160bd0cd 100644 --- a/src/testlib/qtestcase.h +++ b/src/testlib/qtestcase.h @@ -277,7 +277,7 @@ namespace QTest Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, int length); Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, int length); - Q_TESTLIB_EXPORT char *toPrettyUnicode(const ushort *unicode, int length); + Q_TESTLIB_EXPORT char *toPrettyUnicode(QStringView string); Q_TESTLIB_EXPORT char *toString(const char *); Q_TESTLIB_EXPORT char *toString(const void *); diff --git a/tests/auto/corelib/tools/qstringview/tst_qstringview.cpp b/tests/auto/corelib/tools/qstringview/tst_qstringview.cpp index 9849bd78da..28f81e50e7 100644 --- a/tests/auto/corelib/tools/qstringview/tst_qstringview.cpp +++ b/tests/auto/corelib/tools/qstringview/tst_qstringview.cpp @@ -429,6 +429,8 @@ void tst_QStringView::conversion_tests(String string) const sv.crbegin())); QVERIFY(std::equal(help::crbegin(string), help::crend(string), sv.rbegin())); + + QCOMPARE(sv, string); } QStringView sv; @@ -441,8 +443,8 @@ void tst_QStringView::conversion_tests(String string) const // check relational operators: - QVERIFY(sv == string); - QVERIFY(string == sv); + QCOMPARE(sv, string); + QCOMPARE(string, sv); QVERIFY(!(sv != string)); QVERIFY(!(string != sv)); @@ -461,16 +463,16 @@ void tst_QStringView::conversion_tests(String string) const // copy-construct from rvalue (QStringView never assumes ownership): { QStringView sv2 = std::move(string); - QVERIFY(sv2 == sv); - QVERIFY(sv2 == string); + QCOMPARE(sv2, sv); + QCOMPARE(sv2, string); } // copy-assign from rvalue (QStringView never assumes ownership): { QStringView sv2; sv2 = std::move(string); - QVERIFY(sv2 == sv); - QVERIFY(sv2 == string); + QCOMPARE(sv2, sv); + QCOMPARE(sv2, string); } } |