summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qstringapisymmetry
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2017-04-05 08:24:52 +0200
committerMarc Mutz <marc.mutz@kdab.com>2017-04-07 08:34:49 +0000
commitdea78262e52da38de47301e206459967aa6719bb (patch)
tree84134f350187132b6102bdae154827c281fa707d /tests/auto/corelib/tools/qstringapisymmetry
parent95db1f6caef29553ca7c9cf33c8009b9cc95e302 (diff)
tst_QStringApiSymmetry: Add tests for truncate() and chop()
All good. Change-Id: Id791a04fd5e2c9bc7f54660eaaa95d6db61a5674 Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests/auto/corelib/tools/qstringapisymmetry')
-rw-r--r--tests/auto/corelib/tools/qstringapisymmetry/tst_qstringapisymmetry.cpp90
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qstringapisymmetry/tst_qstringapisymmetry.cpp b/tests/auto/corelib/tools/qstringapisymmetry/tst_qstringapisymmetry.cpp
index dd8cbbfbcd..7bc571c83f 100644
--- a/tests/auto/corelib/tools/qstringapisymmetry/tst_qstringapisymmetry.cpp
+++ b/tests/auto/corelib/tools/qstringapisymmetry/tst_qstringapisymmetry.cpp
@@ -191,6 +191,12 @@ private:
void right_data();
template <typename String> void right_impl();
+ void chop_data();
+ template <typename String> void chop_impl();
+
+ void truncate_data() { left_data(); }
+ template <typename String> void truncate_impl();
+
private Q_SLOTS:
void mid_QString_data() { mid_data(); }
@@ -226,6 +232,20 @@ private Q_SLOTS:
void right_QByteArray_data() { right_data(); }
void right_QByteArray() { right_impl<QByteArray>(); }
+ void chop_QString_data() { chop_data(); }
+ void chop_QString() { chop_impl<QString>(); }
+ void chop_QStringRef_data() { chop_data(); }
+ void chop_QStringRef() { chop_impl<QStringRef>(); }
+ void chop_QByteArray_data() { chop_data(); }
+ void chop_QByteArray() { chop_impl<QByteArray>(); }
+
+ void truncate_QString_data() { truncate_data(); }
+ void truncate_QString() { truncate_impl<QString>(); }
+ void truncate_QStringRef_data() { truncate_data(); }
+ void truncate_QStringRef() { truncate_impl<QStringRef>(); }
+ void truncate_QByteArray_data() { truncate_data(); }
+ void truncate_QByteArray() { truncate_impl<QByteArray>(); }
+
//
// UTF-16-only checks:
//
@@ -539,6 +559,76 @@ void tst_QStringApiSymmetry::right_impl()
QCOMPARE(right.isEmpty(), result.isEmpty());
}
+void tst_QStringApiSymmetry::chop_data()
+{
+ QTest::addColumn<QStringRef>("unicode");
+ QTest::addColumn<QLatin1String>("latin1");
+ QTest::addColumn<int>("n");
+ QTest::addColumn<QStringRef>("result");
+
+ QTest::addRow("null") << QStringRef() << QLatin1String() << 0 << QStringRef();
+ QTest::addRow("empty") << QStringRef(&empty) << QLatin1String("") << 0 << QStringRef(&empty);
+
+ // Some classes' truncate() implementations have a wide contract, others a narrow one
+ // so only test valid arguents here:
+#define ROW(base, n, res) \
+ QTest::addRow("%s%d", #base, n) << QStringRef(&base) << QLatin1String(#base) << n << QStringRef(&res);
+
+ ROW(a, 0, a);
+ ROW(a, 1, empty);
+
+ ROW(ab, 0, ab);
+ ROW(ab, 1, a);
+ ROW(ab, 2, empty);
+
+ ROW(abc, 0, abc);
+ ROW(abc, 1, ab);
+ ROW(abc, 2, a);
+ ROW(abc, 3, empty);
+#undef ROW
+}
+
+template <typename String>
+void tst_QStringApiSymmetry::chop_impl()
+{
+ QFETCH(const QStringRef, unicode);
+ QFETCH(const QLatin1String, latin1);
+ QFETCH(const int, n);
+ QFETCH(const QStringRef, result);
+
+ const auto utf8 = unicode.toUtf8();
+
+ const auto s = make<String>(unicode, latin1, utf8);
+
+ {
+ auto chopped = s;
+ chopped.chop(n);
+
+ QVERIFY(chopped == result);
+ QCOMPARE(chopped.isNull(), result.isNull());
+ QCOMPARE(chopped.isEmpty(), result.isEmpty());
+ }
+}
+
+template <typename String>
+void tst_QStringApiSymmetry::truncate_impl()
+{
+ QFETCH(const QStringRef, unicode);
+ QFETCH(const QLatin1String, latin1);
+ QFETCH(const int, n);
+ QFETCH(const QStringRef, result);
+
+ const auto utf8 = unicode.toUtf8();
+
+ auto trunc = make<String>(unicode, latin1, utf8);
+
+ trunc.truncate(n);
+
+ QVERIFY(trunc == result);
+ QCOMPARE(trunc.isNull(), result.isNull());
+ QCOMPARE(trunc.isEmpty(), result.isEmpty());
+}
+
//
//
// UTF-16-only checks: