diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2020-05-22 11:25:36 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2020-08-05 21:51:24 -0700 |
commit | 45838673df6e64a6fd42570c4e8874c5181f7717 (patch) | |
tree | 2ad8addd10efbb69191861d6e4960e20f7839ac3 /tests/auto/corelib/text | |
parent | 9422b5ebc3592f4687650a84131e736219308b9f (diff) |
Change-Id: Ied637aece2a7427b8a2dfffd16116cf3645c6359
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests/auto/corelib/text')
-rw-r--r-- | tests/auto/corelib/text/qstring/tst_qstring.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp index 700284f043..321e9ba32e 100644 --- a/tests/auto/corelib/text/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2020 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. @@ -6181,6 +6181,23 @@ void tst_QString::compare_data() in2[i] = 'b'; QTest::addRow("all-same-except-char-%d", i) << in1 << in2 << -1 << -1; } + + // some non-US-ASCII comparisons + QChar smallA = u'a'; + QChar smallAWithAcute = u'á'; + QChar capitalAWithAcute = u'Á'; + QChar nbsp = u'\u00a0'; + for (int i = 1; i <= 65; ++i) { + QString padding(i - 1, ' '); + QTest::addRow("ascii-nonascii-%d", i) + << (padding + smallA) << (padding + smallAWithAcute) << -1 << -1; + QTest::addRow("nonascii-nonascii-equal-%d", i) + << (padding + smallAWithAcute) << (padding + smallAWithAcute) << 0 << 0; + QTest::addRow("nonascii-nonascii-caseequal-%d", i) + << (padding + capitalAWithAcute) << (padding + smallAWithAcute) << -1 << 0; + QTest::addRow("nonascii-nonascii-notequal-%d", i) + << (padding + nbsp) << (padding + smallAWithAcute) << -1 << -1; + } } static bool isLatin(const QString &s) @@ -6200,7 +6217,10 @@ void tst_QString::compare() QStringRef r1(&s1, 0, s1.length()); QStringRef r2(&s2, 0, s2.length()); + QByteArray s1_8 = s1.toUtf8(); + QByteArray s2_8 = s2.toUtf8(); + const QStringView v1(s1); const QStringView v2(s2); QCOMPARE(sign(QString::compare(s1, s2)), csr); @@ -6218,6 +6238,10 @@ void tst_QString::compare() QCOMPARE(sign(r1.compare(r2, Qt::CaseInsensitive)), cir); QCOMPARE(sign(s1.compare(v2, Qt::CaseSensitive)), csr); QCOMPARE(sign(s1.compare(v2, Qt::CaseInsensitive)), cir); + QCOMPARE(sign(QtPrivate::compareStringsUtf8(s1_8, s1_8.size(), v2, Qt::CaseSensitive)), csr); + QCOMPARE(sign(QtPrivate::compareStringsUtf8(s1_8, s1_8.size(), v2, Qt::CaseInsensitive)), cir); + QCOMPARE(sign(QtPrivate::compareStringsUtf8(s2_8, s2_8.size(), v1, Qt::CaseSensitive)), -csr); + QCOMPARE(sign(QtPrivate::compareStringsUtf8(s2_8, s2_8.size(), v1, Qt::CaseInsensitive)), -cir); QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseSensitive)), csr); QCOMPARE(sign(QString::compare(s1, s2, Qt::CaseInsensitive)), cir); @@ -6238,6 +6262,7 @@ void tst_QString::compare() } if (isLatin(s2)) { + QVERIFY(QtPrivate::isLatin1(s2)); QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()))), csr); QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir); QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr); @@ -6252,6 +6277,7 @@ void tst_QString::compare() } if (isLatin(s1)) { + QVERIFY(QtPrivate::isLatin1(s1)); QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2)), csr); QCOMPARE(sign(QString::compare(QLatin1String(s1.toLatin1()), s2, Qt::CaseInsensitive)), cir); } |