tst_qstringapisymmetry: also check potential rvalue overloads of transformations
For transformations, regardless of whether they're currently overloaded on rvalue-this or not, check the results of calls to const lvalues as well as mutable rvalues. Use the new mixed-type QCOMPARE more. Change-Id: Ibaa436cd88b40e5c0823c3bbe5b04a9964e7e987 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This commit is contained in:
parent
64967461ee
commit
96edd0e440
@ -430,6 +430,15 @@ void tst_QStringApiSymmetry::compare_data(bool hasConceptOfNullAndEmpty)
|
|||||||
#undef ROW
|
#undef ROW
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename String> String detached(String s)
|
||||||
|
{
|
||||||
|
if (!s.isNull()) { // detaching loses nullness, but we need to preserve it
|
||||||
|
auto d = s.data();
|
||||||
|
Q_UNUSED(d);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
template <class Str> Str make(const QStringRef &sf, QLatin1String l1, const QByteArray &u8);
|
template <class Str> Str make(const QStringRef &sf, QLatin1String l1, const QByteArray &u8);
|
||||||
template <> QChar make(const QStringRef &sf, QLatin1String, const QByteArray &) { return sf.isEmpty() ? QChar() : sf.at(0); }
|
template <> QChar make(const QStringRef &sf, QLatin1String, const QByteArray &) { return sf.isEmpty() ? QChar() : sf.at(0); }
|
||||||
template <> QStringRef make(const QStringRef &sf, QLatin1String, const QByteArray &) { return sf; }
|
template <> QStringRef make(const QStringRef &sf, QLatin1String, const QByteArray &) { return sf; }
|
||||||
@ -783,16 +792,30 @@ void tst_QStringApiSymmetry::mid_impl()
|
|||||||
|
|
||||||
const auto s = make<String>(unicode, latin1, utf8);
|
const auto s = make<String>(unicode, latin1, utf8);
|
||||||
|
|
||||||
const auto mid = s.mid(pos);
|
{
|
||||||
const auto mid2 = s.mid(pos, n);
|
const auto mid = s.mid(pos);
|
||||||
|
const auto mid2 = s.mid(pos, n);
|
||||||
|
|
||||||
QVERIFY(mid == result);
|
QCOMPARE(mid, result);
|
||||||
QCOMPARE(mid.isNull(), result.isNull());
|
QCOMPARE(mid.isNull(), result.isNull());
|
||||||
QCOMPARE(mid.isEmpty(), result.isEmpty());
|
QCOMPARE(mid.isEmpty(), result.isEmpty());
|
||||||
|
|
||||||
QVERIFY(mid2 == result2);
|
QCOMPARE(mid2, result2);
|
||||||
QCOMPARE(mid2.isNull(), result2.isNull());
|
QCOMPARE(mid2.isNull(), result2.isNull());
|
||||||
QCOMPARE(mid2.isEmpty(), result2.isEmpty());
|
QCOMPARE(mid2.isEmpty(), result2.isEmpty());
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const auto mid = detached(s).mid(pos);
|
||||||
|
const auto mid2 = detached(s).mid(pos, n);
|
||||||
|
|
||||||
|
QCOMPARE(mid, result);
|
||||||
|
QCOMPARE(mid.isNull(), result.isNull());
|
||||||
|
QCOMPARE(mid.isEmpty(), result.isEmpty());
|
||||||
|
|
||||||
|
QCOMPARE(mid2, result2);
|
||||||
|
QCOMPARE(mid2.isNull(), result2.isNull());
|
||||||
|
QCOMPARE(mid2.isEmpty(), result2.isEmpty());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QStringApiSymmetry::left_data()
|
void tst_QStringApiSymmetry::left_data()
|
||||||
@ -843,6 +866,13 @@ void tst_QStringApiSymmetry::left_impl()
|
|||||||
QCOMPARE(left.isNull(), result.isNull());
|
QCOMPARE(left.isNull(), result.isNull());
|
||||||
QCOMPARE(left.isEmpty(), result.isEmpty());
|
QCOMPARE(left.isEmpty(), result.isEmpty());
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
const auto left = detached(s).left(n);
|
||||||
|
|
||||||
|
QCOMPARE(left, result);
|
||||||
|
QCOMPARE(left.isNull(), result.isNull());
|
||||||
|
QCOMPARE(left.isEmpty(), result.isEmpty());
|
||||||
|
}
|
||||||
{
|
{
|
||||||
auto left = s;
|
auto left = s;
|
||||||
left.truncate(n);
|
left.truncate(n);
|
||||||
@ -894,11 +924,20 @@ void tst_QStringApiSymmetry::right_impl()
|
|||||||
|
|
||||||
const auto s = make<String>(unicode, latin1, utf8);
|
const auto s = make<String>(unicode, latin1, utf8);
|
||||||
|
|
||||||
const auto right = s.right(n);
|
{
|
||||||
|
const auto right = s.right(n);
|
||||||
|
|
||||||
QVERIFY(right == result);
|
QCOMPARE(right, result);
|
||||||
QCOMPARE(right.isNull(), result.isNull());
|
QCOMPARE(right.isNull(), result.isNull());
|
||||||
QCOMPARE(right.isEmpty(), result.isEmpty());
|
QCOMPARE(right.isEmpty(), result.isEmpty());
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const auto right = detached(s).right(n);
|
||||||
|
|
||||||
|
QCOMPARE(right, result);
|
||||||
|
QCOMPARE(right.isNull(), result.isNull());
|
||||||
|
QCOMPARE(right.isEmpty(), result.isEmpty());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QStringApiSymmetry::chop_data()
|
void tst_QStringApiSymmetry::chop_data()
|
||||||
@ -945,16 +984,22 @@ void tst_QStringApiSymmetry::chop_impl()
|
|||||||
{
|
{
|
||||||
const auto chopped = s.chopped(n);
|
const auto chopped = s.chopped(n);
|
||||||
|
|
||||||
QVERIFY(chopped == result);
|
QCOMPARE(chopped, result);
|
||||||
QCOMPARE(chopped.isNull(), result.isNull());
|
QCOMPARE(chopped.isNull(), result.isNull());
|
||||||
QCOMPARE(chopped.isEmpty(), result.isEmpty());
|
QCOMPARE(chopped.isEmpty(), result.isEmpty());
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
const auto chopped = detached(s).chopped(n);
|
||||||
|
|
||||||
|
QCOMPARE(chopped, result);
|
||||||
|
QCOMPARE(chopped.isNull(), result.isNull());
|
||||||
|
QCOMPARE(chopped.isEmpty(), result.isEmpty());
|
||||||
|
}
|
||||||
{
|
{
|
||||||
auto chopped = s;
|
auto chopped = s;
|
||||||
chopped.chop(n);
|
chopped.chop(n);
|
||||||
|
|
||||||
QVERIFY(chopped == result);
|
QCOMPARE(chopped, result);
|
||||||
QCOMPARE(chopped.isNull(), result.isNull());
|
QCOMPARE(chopped.isNull(), result.isNull());
|
||||||
QCOMPARE(chopped.isEmpty(), result.isEmpty());
|
QCOMPARE(chopped.isEmpty(), result.isEmpty());
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user