diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2017-04-05 08:24:52 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2017-04-07 08:34:49 +0000 |
commit | dea78262e52da38de47301e206459967aa6719bb (patch) | |
tree | 84134f350187132b6102bdae154827c281fa707d /tests/auto/corelib/tools/qstringapisymmetry | |
parent | 95db1f6caef29553ca7c9cf33c8009b9cc95e302 (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.cpp | 90 |
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: |