From 2031196ad12ae7a641fc00c0990072f5fb3a7172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Tue, 18 Jul 2017 10:34:02 +0200 Subject: Add test for QLocale::bcp47Name() Task-number: QTBUG-61949 Change-Id: I34fece0441afb1e69ea84ae59b90c5e2b7cf133f Reviewed-by: Edward Welbourne Reviewed-by: Thiago Macieira --- tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'tests/auto/corelib/tools/qlocale') diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp index f278a7470b..d08e5dc289 100644 --- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp @@ -137,6 +137,8 @@ private slots: void textDirection_data(); void textDirection(); + void bcp47Name(); + private: QString m_decimal, m_thousand, m_sdate, m_ldate, m_time; QString m_sysapp; @@ -2525,5 +2527,26 @@ void tst_QLocale::textDirection() QCOMPARE(locale.textDirection() == Qt::RightToLeft, rightToLeft); } +void tst_QLocale::bcp47Name() +{ + QCOMPARE(QLocale("C").bcp47Name(), QStringLiteral("C")); + QCOMPARE(QLocale("en").bcp47Name(), QStringLiteral("en")); + QCOMPARE(QLocale("en_US").bcp47Name(), QStringLiteral("en")); + QCOMPARE(QLocale("en_GB").bcp47Name(), QStringLiteral("en-GB")); + QCOMPARE(QLocale("en_DE").bcp47Name(), QStringLiteral("en-DE")); + QCOMPARE(QLocale("de_DE").bcp47Name(), QStringLiteral("de")); + QCOMPARE(QLocale("sr_RS").bcp47Name(), QStringLiteral("sr")); + QCOMPARE(QLocale("sr_Cyrl_RS").bcp47Name(), QStringLiteral("sr")); + QCOMPARE(QLocale("sr_Latn_RS").bcp47Name(), QStringLiteral("sr-Latn")); + QCOMPARE(QLocale("sr_ME").bcp47Name(), QStringLiteral("sr-ME")); + QCOMPARE(QLocale("sr_Cyrl_ME").bcp47Name(), QStringLiteral("sr-Cyrl-ME")); + QCOMPARE(QLocale("sr_Latn_ME").bcp47Name(), QStringLiteral("sr-ME")); + + // Fall back to defaults when country isn't in CLDR for this language: + QCOMPARE(QLocale("sr_HR").bcp47Name(), QStringLiteral("sr")); + QCOMPARE(QLocale("sr_Cyrl_HR").bcp47Name(), QStringLiteral("sr")); + QCOMPARE(QLocale("sr_Latn_HR").bcp47Name(), QStringLiteral("sr-Latn")); +} + QTEST_MAIN(tst_QLocale) #include "tst_qlocale.moc" -- cgit v1.2.3 From af7e756155cf44e05816cf91be04e13d9e7ca084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCri=20Valdmann?= Date: Tue, 18 Jul 2017 10:41:20 +0200 Subject: Return "en" for QLocale::c().bcp47Name() Currently QLocale::c().bcp47Name() returns "C" which, according to [BCP47], is not a valid language tag. In particular it does not conform to the ABNF grammar in section 2.1 which specifies a minimum length of 2 characters for all language tags. [BCP47]: https://tools.ietf.org/html/bcp47 This patch changes the return value to "en" seeing as the documentation for QLocale::Language states that the C language is identical in behavior to English. Task-number: QTBUG-61949 Change-Id: I2a381def8fb7156467e01d105da92bb1f4821204 Reviewed-by: Edward Welbourne --- tests/auto/corelib/tools/qlocale/tst_qlocale.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/auto/corelib/tools/qlocale') diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp index d08e5dc289..10d78b1f2f 100644 --- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp +++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp @@ -2529,7 +2529,7 @@ void tst_QLocale::textDirection() void tst_QLocale::bcp47Name() { - QCOMPARE(QLocale("C").bcp47Name(), QStringLiteral("C")); + QCOMPARE(QLocale("C").bcp47Name(), QStringLiteral("en")); QCOMPARE(QLocale("en").bcp47Name(), QStringLiteral("en")); QCOMPARE(QLocale("en_US").bcp47Name(), QStringLiteral("en")); QCOMPARE(QLocale("en_GB").bcp47Name(), QStringLiteral("en-GB")); -- cgit v1.2.3