diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-08-27 12:57:14 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@digia.com> | 2014-09-10 21:11:11 +0200 |
commit | c17563eca879845deef542173f5fb479c9aa2d0e (patch) | |
tree | b967050c3502458043998288292d6da952252649 /tests/auto/corelib | |
parent | 6316a681f3f3dde46d5ab5c915f31a2098b463bb (diff) |
Fix several issues in QCollator
Refactor the code and move more things into the cross platform
code path.
Make sure the flags survive changing the locale of QCollator.
Use the correct locale on Windows, WinRT and OS X. We now
pass all QCollator autotests on these platforms.
Task-number: QTBUG-40778
Change-Id: Ic2d3334b5018c323a35a3ea8fc1d7ab5f99b4e62
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib')
-rw-r--r-- | tests/auto/corelib/tools/qcollator/tst_qcollator.cpp | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp b/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp index 3a00ebd505..f6fd13007a 100644 --- a/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp +++ b/tests/auto/corelib/tools/qcollator/tst_qcollator.cpp @@ -55,6 +55,8 @@ private Q_SLOTS: void compare_data(); void compare(); + + void state(); }; #ifdef Q_COMPILER_RVALUE_REFS @@ -121,26 +123,18 @@ void tst_QCollator::compare_data() diaresis (E4), which comes before o diaresis (F6), which all come after z. */ -#if !defined(Q_OS_WIN) || defined(QT_USE_ICU) QTest::newRow("swedish1") << QString("sv_SE") << QString::fromLatin1("\xe5") << QString::fromLatin1("\xe4") << -1 << -1; -#endif QTest::newRow("swedish2") << QString("sv_SE") << QString::fromLatin1("\xe4") << QString::fromLatin1("\xf6") << -1 << -1; QTest::newRow("swedish3") << QString("sv_SE") << QString::fromLatin1("\xe5") << QString::fromLatin1("\xf6") << -1 << -1; -#if !defined(Q_OS_OSX) && (!defined(Q_OS_WIN) || defined(QT_USE_ICU)) QTest::newRow("swedish4") << QString("sv_SE") << QString::fromLatin1("z") << QString::fromLatin1("\xe5") << -1 << -1; -#endif /* In Norwegian, ae (E6) comes before o with stroke (D8), which comes before a with ring above (E5). */ QTest::newRow("norwegian1") << QString("no_NO") << QString::fromLatin1("\xe6") << QString::fromLatin1("\xd8") << -1 << -1; -#if !defined(Q_OS_WIN) || defined(QT_USE_ICU) -# ifndef Q_OS_OSX QTest::newRow("norwegian2") << QString("no_NO") << QString::fromLatin1("\xd8") << QString::fromLatin1("\xe5") << -1 << -1; -# endif QTest::newRow("norwegian3") << QString("no_NO") << QString::fromLatin1("\xe6") << QString::fromLatin1("\xe5") << -1 << -1; -#endif // !Q_OS_WIN || QT_USE_ICU /* In German, z comes *after* a with diaresis (E4), which comes before o diaresis (F6). @@ -180,6 +174,30 @@ void tst_QCollator::compare() QCOMPARE(collator.compare(s1, s2), caseInsensitiveResult); } + +void tst_QCollator::state() +{ + QCollator c; + c.setCaseSensitivity(Qt::CaseInsensitive); + c.setLocale(QLocale::German); + + c.compare(QString("a"), QString("b")); + + QCOMPARE(c.caseSensitivity(), Qt::CaseInsensitive); + QCOMPARE(c.locale(), QLocale(QLocale::German)); + + c.setLocale(QLocale::French); + c.setNumericMode(true); + c.setIgnorePunctuation(true); + c.setLocale(QLocale::Norwegian); + + QCOMPARE(c.caseSensitivity(), Qt::CaseInsensitive); + QCOMPARE(c.numericMode(), true); + QCOMPARE(c.ignorePunctuation(), true); + QCOMPARE(c.locale(), QLocale(QLocale::Norwegian)); + +} + QTEST_APPLESS_MAIN(tst_QCollator) #include "tst_qcollator.moc" |