summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2017-03-02 14:23:05 +0100
committerEdward Welbourne <edward.welbourne@qt.io>2017-03-06 09:51:49 +0000
commita1c27748d22f94d608cc499db527bf989a5516f2 (patch)
treec231748ae6c1372e5f1a000ee2fc5014ca6456a7 /tests
parentf2e103296f9077a747e0dd43504e3e7630f56605 (diff)
Make QLocale consistent about special handling of the C locale
QLocale::matchingLocales() simply created each locale using the basic data, without (unless the matching conditions stipulated Language C) applying number-options hacks that it applies everywhere else, when creating the C locale. Thus the C locale in its returned list (if it wasn't the only entry) ended up with the default number options, without omiting separators in numbers. Thus QLocale::c() didn't actually appear as an entry in the list. Discovered while investigating QTBUG-58947. Added a dumb autotest that checks various ways of getting the C locale do actually give us equal locale objects. Fixed matchingLocales() to apply the same hack as is used elsewhere for the C locale. Change-Id: I263f31da623052b63171f5b5a83c65802383df21 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
index 06b0fe8d51..d18af71e20 100644
--- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
@@ -80,6 +80,7 @@ private slots:
void ctor();
void emptyCtor();
void legacyNames();
+ void consistentC();
void unixLocaleName();
void matchingLocales();
void stringToDouble_data();
@@ -579,6 +580,15 @@ void tst_QLocale::legacyNames()
#undef TEST_CTOR
}
+void tst_QLocale::consistentC()
+{
+ const QLocale c(QLocale::C);
+ QCOMPARE(c, QLocale::c());
+ QCOMPARE(c, QLocale(QLocale::C, QLocale::AnyScript, QLocale::AnyCountry));
+ QVERIFY(QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript,
+ QLocale::AnyCountry).contains(c));
+}
+
void tst_QLocale::matchingLocales()
{
const QLocale c(QLocale::C);