diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2012-11-24 04:09:34 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-25 04:06:51 +0100 |
commit | 9b85b81bc82f4e615b5d165425dc9f84fd2ae482 (patch) | |
tree | f41d10600f9688690153a7332cf170e820ee9a63 /tests/auto | |
parent | 4ac521354dfa575c31ecb732a0f8c1e18827c21e (diff) |
QLocale: Fix matchingLocales() behavior if script or country is not Any*
Since the documentation doesn't mention the search should be done by language only,
consider the current behavior incorrect.
As of now, it is possible to get a list of locales by Country or Script as well.
Also fix countriesForLanguage() to be in-sync with matchingLocales().
Change-Id: I6a09ca459120143565fa6099d2b823df1fed7c25
Reviewed-by: Denis Dzyubenko <denis@ddenis.info>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp index 911187da53..ea65236d16 100644 --- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp @@ -100,6 +100,7 @@ private slots: #endif void legacyNames(); void unixLocaleName(); + void matchingLocales(); void double_conversion_data(); void double_conversion(); void long_long_conversion_data(); @@ -534,6 +535,35 @@ void tst_QLocale::legacyNames() #undef TEST_CTOR } +void tst_QLocale::matchingLocales() +{ + const QLocale c(QLocale::C); + const QLocale ru_RU(QLocale::Russian, QLocale::Russia); + + QList<QLocale> locales = QLocale::matchingLocales(QLocale::C, QLocale::AnyScript, QLocale::AnyCountry); + QCOMPARE(locales.size(), 1); + QVERIFY(locales.contains(c)); + + locales = QLocale::matchingLocales(QLocale::Russian, QLocale::CyrillicScript, QLocale::Russia); + QCOMPARE(locales.size(), 1); + QVERIFY(locales.contains(ru_RU)); + + locales = QLocale::matchingLocales(QLocale::Russian, QLocale::AnyScript, QLocale::AnyCountry); + QVERIFY(!locales.isEmpty()); + QVERIFY(!locales.contains(c)); + QVERIFY(locales.contains(ru_RU)); + + locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::CyrillicScript, QLocale::AnyCountry); + QVERIFY(!locales.isEmpty()); + QVERIFY(!locales.contains(c)); + QVERIFY(locales.contains(ru_RU)); + + locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::Russia); + QVERIFY(!locales.isEmpty()); + QVERIFY(!locales.contains(c)); + QVERIFY(locales.contains(ru_RU)); +} + void tst_QLocale::unixLocaleName() { #define TEST_NAME(req_lang, req_country, exp_name) \ |