Add mixed-language tests for QLocale::uiLanguages()

Change-Id: I1b68e1e47254dc5936f28a9a2c6cad6d316cb65a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Edward Welbourne 2024-10-02 16:23:48 +02:00
parent 1f2ab46745
commit 25a430a350

View File

@ -4085,7 +4085,17 @@ public:
switch (type) {
case UILanguages:
if (m_name == u"en-DE") // QTBUG-104930: simulate macOS's list not including m_name.
return QVariant(QStringList{QStringLiteral("en-GB"), QStringLiteral("de-DE")});
return QVariant(QStringList{u"en-GB"_s, u"de-DE"_s});
if (m_name == u"en-Dsrt-GB")
return QVariant(QStringList{u"en-Dsrt-GB"_s, u"en-GB"_s});
if (m_name == u"en-FO") { // Nominally Faroe Islands, used for en-mixed test
return QVariant(QStringList{u"en-DK"_s, u"en-GB"_s, u"fo-FO"_s,
u"da-FO"_s, u"da-DK"_s});
}
if (m_name == u"de-CA") { // Imagine a 2nd generation Canadian of de-AT ancestry ...
return QVariant(QStringList{u"en-CA"_s, u"fr-CA"_s, u"de-AT"_s,
u"en-GB"_s, u"fr-FR"_s});
}
return QVariant(QStringList{m_name});
case LanguageId:
return m_id.language_id;
@ -4171,6 +4181,21 @@ void tst_QLocale::mySystemLocale_data()
<< QString("C-Hans-CN") << QLocale::C
<< QStringList{QStringLiteral("C-Hans-CN"), QStringLiteral("C")};
QTest::newRow("en-Dsrt-GB")
<< u"en-Dsrt-GB"_s << QLocale::English
<< QStringList{u"en-Dsrt-GB"_s, u"en-GB"_s, u"en-Latn-GB"_s};
QTest::newRow("en-mixed")
<< u"en-FO"_s << QLocale::English
<< QStringList{u"en-FO"_s, u"en-Latn-FO"_s, u"en-DK"_s, u"en-Latn-DK"_s,
u"en-GB"_s, u"en-Latn-GB"_s,
u"fo-FO"_s, u"fo-Latn-FO"_s, u"fo"_s,
u"da-FO"_s, u"da-Latn-FO"_s, u"da-DK"_s, u"da-Latn-DK"_s, u"da"_s};
QTest::newRow("polylingual-CA")
<< u"de-CA"_s << QLocale::German
<< QStringList{u"de-CA"_s, u"de-Latn-CA"_s, u"en-CA"_s, u"en-Latn-CA"_s,
u"fr-CA"_s, u"fr-Latn-CA"_s, u"de-AT"_s, u"de-Latn-AT"_s,
u"en-GB"_s, u"en-Latn-GB"_s, u"fr-FR"_s, u"fr-Latn-FR"_s, u"fr"_s};
QTest::newRow("und-US")
<< QString("und-US") << QLocale::C
<< QStringList{QStringLiteral("und-US"), QStringLiteral("C")};
@ -4201,7 +4226,8 @@ void tst_QLocale::mySystemLocale()
QCOMPARE(QLocale().language(), language);
QCOMPARE(QLocale::system().language(), language);
auto reporter = qScopeGuard([]() {
qDebug("\n\t%s", qPrintable(QLocale::system().uiLanguages().join(u"\n\t")));
qDebug("Actual entries:\n\t%s",
qPrintable(QLocale::system().uiLanguages().join(u"\n\t")));
});
QCOMPARE(QLocale::system().uiLanguages(), uiLanguages);
QCOMPARE(QLocale::system().uiLanguages(QLocale::TagSeparator::Underscore),