diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2011-10-18 19:12:18 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-25 21:58:57 +0100 |
commit | ebe43992f922c49091eaaf9e0300b807775f34e9 (patch) | |
tree | 714a0d1c4c05f816b94c1a92f7108af9e668b9c2 /tests/auto/corelib | |
parent | 1ddecb0aa20c660ab086cbd0b87c8384ed6f444d (diff) |
add tests and benchmarks for QString::toLower()/toUpper()/toCaseFolded()
Merge-request: 70
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Change-Id: I3929d4d8963c3cef6d2c6420d8ad1f7a45f7e042
Reviewed-by: Olivier
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r-- | tests/auto/corelib/tools/qstring/tst_qstring.cpp | 92 |
1 files changed, 87 insertions, 5 deletions
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp index 80e9984690..0c0d756e48 100644 --- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp +++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp @@ -121,8 +121,9 @@ private slots: void simplified_data(); void simplified(); void trimmed(); - void toLower(); void toUpper(); + void toLower(); + void toCaseFolded(); void rightJustified(); void leftJustified(); void mid(); @@ -1565,14 +1566,28 @@ void tst_QString::toUpper() QCOMPARE( QString(1, QChar(0xdf)).toUpper(), QString("SS")); - QString lower; + QString lower, upper; lower += QChar(QChar::highSurrogate(0x10428)); lower += QChar(QChar::lowSurrogate(0x10428)); - QString upper; upper += QChar(QChar::highSurrogate(0x10400)); upper += QChar(QChar::lowSurrogate(0x10400)); QCOMPARE( lower.toUpper(), upper); + lower += lower; + upper += upper; + QCOMPARE( lower.toUpper(), upper); + // test for broken surrogate pair handling (low low hi low hi low) + lower.prepend(QChar(QChar::lowSurrogate(0x10428))); + lower.prepend(QChar(QChar::lowSurrogate(0x10428))); + upper.prepend(QChar(QChar::lowSurrogate(0x10428))); + upper.prepend(QChar(QChar::lowSurrogate(0x10428))); + QCOMPARE(lower.toUpper(), upper); + // test for broken surrogate pair handling (low low hi low hi low hi hi) + lower += QChar(QChar::highSurrogate(0x10428)); + lower += QChar(QChar::highSurrogate(0x10428)); + upper += QChar(QChar::highSurrogate(0x10428)); + upper += QChar(QChar::highSurrogate(0x10428)); + QCOMPARE(lower.toUpper(), upper); #ifdef QT_USE_ICU // test doesn't work with ICU support, since QChar is unaware of any locale @@ -1610,13 +1625,28 @@ void tst_QString::toLower() QCOMPARE( QString(1, QChar(0x130)).toLower(), QString(QString(1, QChar(0x69)) + QChar(0x307))); - QString lower; + QString lower, upper; lower += QChar(QChar::highSurrogate(0x10428)); lower += QChar(QChar::lowSurrogate(0x10428)); - QString upper; upper += QChar(QChar::highSurrogate(0x10400)); upper += QChar(QChar::lowSurrogate(0x10400)); QCOMPARE( upper.toLower(), lower); + lower += lower; + upper += upper; + QCOMPARE( upper.toLower(), lower); + + // test for broken surrogate pair handling (low low hi low hi low) + lower.prepend(QChar(QChar::lowSurrogate(0x10400))); + lower.prepend(QChar(QChar::lowSurrogate(0x10400))); + upper.prepend(QChar(QChar::lowSurrogate(0x10400))); + upper.prepend(QChar(QChar::lowSurrogate(0x10400))); + QCOMPARE( upper.toLower(), lower); + // test for broken surrogate pair handling (low low hi low hi low hi hi) + lower += QChar(QChar::highSurrogate(0x10400)); + lower += QChar(QChar::highSurrogate(0x10400)); + upper += QChar(QChar::highSurrogate(0x10400)); + upper += QChar(QChar::highSurrogate(0x10400)); + QCOMPARE( upper.toLower(), lower); #ifdef QT_USE_ICU // test doesn't work with ICU support, since QChar is unaware of any locale @@ -1633,6 +1663,58 @@ void tst_QString::toLower() #endif } +void tst_QString::toCaseFolded() +{ + QCOMPARE( QString().toCaseFolded(), QString() ); + QCOMPARE( QString("").toCaseFolded(), QString("") ); + QCOMPARE( QString("text").toCaseFolded(), QString("text") ); + QCOMPARE( QString("Text").toCaseFolded(), QString("text") ); + QCOMPARE( QString("tExt").toCaseFolded(), QString("text") ); + QCOMPARE( QString("teXt").toCaseFolded(), QString("text") ); + QCOMPARE( QString("texT").toCaseFolded(), QString("text") ); + QCOMPARE( QString("TExt").toCaseFolded(), QString("text") ); + QCOMPARE( QString("teXT").toCaseFolded(), QString("text") ); + QCOMPARE( QString("tEXt").toCaseFolded(), QString("text") ); + QCOMPARE( QString("tExT").toCaseFolded(), QString("text") ); + QCOMPARE( QString("TEXT").toCaseFolded(), QString("text") ); + QCOMPARE( QString("@ABYZ[").toCaseFolded(), QString("@abyz[")); + QCOMPARE( QString("@abyz[").toCaseFolded(), QString("@abyz[")); + QCOMPARE( QString("`ABYZ{").toCaseFolded(), QString("`abyz{")); + QCOMPARE( QString("`abyz{").toCaseFolded(), QString("`abyz{")); + + QString lower, upper; + upper += QChar(QChar::highSurrogate(0x10400)); + upper += QChar(QChar::lowSurrogate(0x10400)); + lower += QChar(QChar::highSurrogate(0x10428)); + lower += QChar(QChar::lowSurrogate(0x10428)); + QCOMPARE( upper.toCaseFolded(), lower); + lower += lower; + upper += upper; + QCOMPARE( upper.toCaseFolded(), lower); + + // test for broken surrogate pair handling (low low hi low hi low) + lower.prepend(QChar(QChar::lowSurrogate(0x10400))); + lower.prepend(QChar(QChar::lowSurrogate(0x10400))); + upper.prepend(QChar(QChar::lowSurrogate(0x10400))); + upper.prepend(QChar(QChar::lowSurrogate(0x10400))); + QCOMPARE(upper.toCaseFolded(), lower); + // test for broken surrogate pair handling (low low hi low hi low hi hi) + lower += QChar(QChar::highSurrogate(0x10400)); + lower += QChar(QChar::highSurrogate(0x10400)); + upper += QChar(QChar::highSurrogate(0x10400)); + upper += QChar(QChar::highSurrogate(0x10400)); + QCOMPARE(upper.toCaseFolded(), lower); + + //### we currently don't support full case foldings + for (int i = 0; i < 65536; ++i) { + QString str(1, QChar(i)); + QString lower = str.toCaseFolded(); + QVERIFY(lower.length() >= 1); + if (lower.length() == 1) + QVERIFY(str.toCaseFolded() == QString(1, QChar(i).toCaseFolded())); + } +} + void tst_QString::trimmed() { QString a; |