summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2012-11-24 04:09:34 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-25 04:06:51 +0100
commit9b85b81bc82f4e615b5d165425dc9f84fd2ae482 (patch)
treef41d10600f9688690153a7332cf170e820ee9a63 /tests/auto
parent4ac521354dfa575c31ecb732a0f8c1e18827c21e (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.cpp30
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) \