mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 11:07:45 +00:00
LibLocale: Prepare locale data generator for breaking changes in CLDR 43
In CLDR 42 and earlier, we were able to assume all cldr-localename files existed for every locale. They now do not exist for locales that don't provide any localized data. Namely, this is the "und" locale (which is an alias for the root locale, i.e. the locale we fall back to when a user provides an unknown locale). Further, we were previously able to assume that each currencies.json in cldr-numbers contained all currencies. This file now excludes currencies whose localized names are the same as the currency key. Therefore, we now preprocess currencies.json to discover all currencies ahead of time, much like we already do for languages.json.
This commit is contained in:
parent
259a84b7b6
commit
0b69e9f974
2 changed files with 151 additions and 27 deletions
|
@ -518,3 +518,75 @@ TEST_CASE(supports_locale_aliases)
|
|||
EXPECT(Locale::is_locale_available("zh-TW"sv));
|
||||
EXPECT(Locale::is_locale_available("zh-Hant-TW"sv));
|
||||
}
|
||||
|
||||
TEST_CASE(locale_mappings_en)
|
||||
{
|
||||
auto language = Locale::get_locale_language_mapping("en"sv, "en"sv);
|
||||
EXPECT(language.has_value());
|
||||
EXPECT_EQ(*language, "English"sv);
|
||||
|
||||
language = Locale::get_locale_language_mapping("en"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!language.has_value());
|
||||
|
||||
auto territory = Locale::get_locale_territory_mapping("en"sv, "US"sv);
|
||||
EXPECT(territory.has_value());
|
||||
EXPECT_EQ(*territory, "United States"sv);
|
||||
|
||||
territory = Locale::get_locale_territory_mapping("en"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!territory.has_value());
|
||||
|
||||
auto script = Locale::get_locale_script_mapping("en"sv, "Latn"sv);
|
||||
EXPECT(script.has_value());
|
||||
EXPECT_EQ(*script, "Latin"sv);
|
||||
|
||||
script = Locale::get_locale_script_mapping("en"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!script.has_value());
|
||||
}
|
||||
|
||||
TEST_CASE(locale_mappings_fr)
|
||||
{
|
||||
auto language = Locale::get_locale_language_mapping("fr"sv, "en"sv);
|
||||
EXPECT(language.has_value());
|
||||
EXPECT_EQ(*language, "anglais"sv);
|
||||
|
||||
language = Locale::get_locale_language_mapping("fr"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!language.has_value());
|
||||
|
||||
auto territory = Locale::get_locale_territory_mapping("fr"sv, "US"sv);
|
||||
EXPECT(territory.has_value());
|
||||
EXPECT_EQ(*territory, "États-Unis"sv);
|
||||
|
||||
territory = Locale::get_locale_territory_mapping("fr"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!territory.has_value());
|
||||
|
||||
auto script = Locale::get_locale_script_mapping("fr"sv, "Latn"sv);
|
||||
EXPECT(script.has_value());
|
||||
EXPECT_EQ(*script, "latin"sv);
|
||||
|
||||
script = Locale::get_locale_script_mapping("fr"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!script.has_value());
|
||||
}
|
||||
|
||||
TEST_CASE(locale_mappings_root)
|
||||
{
|
||||
auto language = Locale::get_locale_language_mapping("und"sv, "en"sv);
|
||||
EXPECT(language.has_value());
|
||||
EXPECT_EQ(*language, "en"sv);
|
||||
|
||||
language = Locale::get_locale_language_mapping("und"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!language.has_value());
|
||||
|
||||
auto territory = Locale::get_locale_territory_mapping("und"sv, "US"sv);
|
||||
EXPECT(territory.has_value());
|
||||
EXPECT_EQ(*territory, "US"sv);
|
||||
|
||||
territory = Locale::get_locale_territory_mapping("und"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!territory.has_value());
|
||||
|
||||
auto script = Locale::get_locale_script_mapping("und"sv, "Latn"sv);
|
||||
EXPECT(script.has_value());
|
||||
EXPECT_EQ(*script, "Latn"sv);
|
||||
|
||||
script = Locale::get_locale_script_mapping("und"sv, "i-defintely-don't-exist"sv);
|
||||
EXPECT(!script.has_value());
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue