summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/text
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2020-05-22 11:25:36 -0700
committerThiago Macieira <thiago.macieira@intel.com>2020-08-05 21:51:24 -0700
commit45838673df6e64a6fd42570c4e8874c5181f7717 (patch)
tree2ad8addd10efbb69191861d6e4960e20f7839ac3 /tests/auto/corelib/text
parent9422b5ebc3592f4687650a84131e736219308b9f (diff)
Implement UTF-16 to UTF-8 case-insensitive compare and make public
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.cpp30
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);
}