QtTest: add support for printing QStringViews
[ChangeLog][QtTest][QCOMPARE] Now supports printing QStringViews in case of test failures. Change-Id: I4dc2542cd1013fd63c094c249e721d7102387bde Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
ff93eddfd5
commit
09f6227653
@ -65,9 +65,14 @@ QT_BEGIN_NAMESPACE
|
|||||||
namespace QTest
|
namespace QTest
|
||||||
{
|
{
|
||||||
|
|
||||||
|
template <> inline char *toString(const QStringView &str)
|
||||||
|
{
|
||||||
|
return QTest::toPrettyUnicode(str);
|
||||||
|
}
|
||||||
|
|
||||||
template<> inline char *toString(const QString &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)
|
template<> inline char *toString(const QLatin1String &str)
|
||||||
|
@ -1271,6 +1271,16 @@ char *toPrettyCString(const char *p, int length)
|
|||||||
return buffer.take();
|
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
|
\internal
|
||||||
Returns the same QString but with only the ASCII characters still shown;
|
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().
|
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
|
// keep it simple for the vast majority of cases
|
||||||
bool trimmed = false;
|
bool trimmed = false;
|
||||||
QScopedArrayPointer<char> buffer(new char[256]);
|
QScopedArrayPointer<char> buffer(new char[256]);
|
||||||
|
@ -277,7 +277,7 @@ namespace QTest
|
|||||||
|
|
||||||
Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, int length);
|
Q_TESTLIB_EXPORT char *toHexRepresentation(const char *ba, int length);
|
||||||
Q_TESTLIB_EXPORT char *toPrettyCString(const char *unicode, 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 char *);
|
||||||
Q_TESTLIB_EXPORT char *toString(const void *);
|
Q_TESTLIB_EXPORT char *toString(const void *);
|
||||||
|
|
||||||
|
@ -429,6 +429,8 @@ void tst_QStringView::conversion_tests(String string) const
|
|||||||
sv.crbegin()));
|
sv.crbegin()));
|
||||||
QVERIFY(std::equal(help::crbegin(string), help::crend(string),
|
QVERIFY(std::equal(help::crbegin(string), help::crend(string),
|
||||||
sv.rbegin()));
|
sv.rbegin()));
|
||||||
|
|
||||||
|
QCOMPARE(sv, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringView sv;
|
QStringView sv;
|
||||||
@ -441,8 +443,8 @@ void tst_QStringView::conversion_tests(String string) const
|
|||||||
|
|
||||||
// check relational operators:
|
// check relational operators:
|
||||||
|
|
||||||
QVERIFY(sv == string);
|
QCOMPARE(sv, string);
|
||||||
QVERIFY(string == sv);
|
QCOMPARE(string, sv);
|
||||||
|
|
||||||
QVERIFY(!(sv != string));
|
QVERIFY(!(sv != string));
|
||||||
QVERIFY(!(string != sv));
|
QVERIFY(!(string != sv));
|
||||||
@ -461,16 +463,16 @@ void tst_QStringView::conversion_tests(String string) const
|
|||||||
// copy-construct from rvalue (QStringView never assumes ownership):
|
// copy-construct from rvalue (QStringView never assumes ownership):
|
||||||
{
|
{
|
||||||
QStringView sv2 = std::move(string);
|
QStringView sv2 = std::move(string);
|
||||||
QVERIFY(sv2 == sv);
|
QCOMPARE(sv2, sv);
|
||||||
QVERIFY(sv2 == string);
|
QCOMPARE(sv2, string);
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy-assign from rvalue (QStringView never assumes ownership):
|
// copy-assign from rvalue (QStringView never assumes ownership):
|
||||||
{
|
{
|
||||||
QStringView sv2;
|
QStringView sv2;
|
||||||
sv2 = std::move(string);
|
sv2 = std::move(string);
|
||||||
QVERIFY(sv2 == sv);
|
QCOMPARE(sv2, sv);
|
||||||
QVERIFY(sv2 == string);
|
QCOMPARE(sv2, string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user