diff --git a/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/LocalesResolverBaseImplTest.java b/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/LocalesResolverBaseImplTest.java index 42a5e2b..8b74a8e 100644 --- a/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/LocalesResolverBaseImplTest.java +++ b/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/LocalesResolverBaseImplTest.java @@ -187,7 +187,7 @@ static Stream whenResolvingUnsupportedLocale_returnBetterDefaultLocal Arguments.of( "et-EE", supportedLocales, - ResolvedLocale.fromLanguageTags("en-GB", List.of("en"), "en-GB")), + ResolvedLocale.fromLanguageTags("en-GB", List.of("en"), "en-EE")), // Dutch (Netherlands) Arguments.of( "nl-NL", diff --git a/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/ReferenceLocalesCalculatorBaseImplTest.java b/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/ReferenceLocalesCalculatorBaseImplTest.java index c939584..720cdeb 100644 --- a/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/ReferenceLocalesCalculatorBaseImplTest.java +++ b/locales-common/src/test/java/com/spotify/i18n/locales/common/impl/ReferenceLocalesCalculatorBaseImplTest.java @@ -291,20 +291,22 @@ private static List english() { rrl("en-DG", SAME), rrl("en-DK", SAME), rrl("en-DM", SAME), + rrl("en-EE", SAME), rrl("en-ER", SAME), rrl("en-ES", SAME), rrl("en-FI", SAME), rrl("en-FJ", SAME), - rrl("en-FR", SAME), rrl("en-FK", SAME), rrl("en-FM", SAME), + rrl("en-FR", SAME), rrl("en-GB", SAME), - rrl("en-GS", SAME), rrl("en-GD", SAME), + rrl("en-GE", SAME), rrl("en-GG", SAME), rrl("en-GH", SAME), rrl("en-GI", SAME), rrl("en-GM", SAME), + rrl("en-GS", SAME), rrl("en-GU", SAME), rrl("en-GY", SAME), rrl("en-HK", SAME), @@ -318,6 +320,7 @@ private static List english() { rrl("en-IT", SAME), rrl("en-JE", SAME), rrl("en-JM", SAME), + rrl("en-JP", SAME), rrl("en-KE", SAME), rrl("en-KI", SAME), rrl("en-KN", SAME), @@ -325,6 +328,8 @@ private static List english() { rrl("en-LC", SAME), rrl("en-LR", SAME), rrl("en-LS", SAME), + rrl("en-LT", SAME), + rrl("en-LV", SAME), rrl("en-MG", SAME), rrl("en-MH", SAME), rrl("en-MO", SAME), @@ -371,6 +376,7 @@ private static List english() { rrl("en-TT", SAME), rrl("en-TV", SAME), rrl("en-TZ", SAME), + rrl("en-UA", SAME), rrl("en-UG", SAME), rrl("en-UM", SAME), rrl("en-VC", SAME), @@ -474,7 +480,15 @@ private static List german() { } private static List italian() { - return List.of(rrl("it", SAME), rrl("it-CH", SAME), rrl("it-SM", SAME), rrl("it-VA", SAME)); + return List.of( + // Italian + rrl("it", SAME), + rrl("it-CH", SAME), + rrl("it-SM", SAME), + rrl("it-VA", SAME), + + // Sicilian + rrl("scn", LOW)); } private static List norwegian() { diff --git a/locales-utils/src/test/java/com/spotify/i18n/locales/utils/hierarchy/LocalesHierarchyUtilsTest.java b/locales-utils/src/test/java/com/spotify/i18n/locales/utils/hierarchy/LocalesHierarchyUtilsTest.java index 058f5b8..60e5cf6 100644 --- a/locales-utils/src/test/java/com/spotify/i18n/locales/utils/hierarchy/LocalesHierarchyUtilsTest.java +++ b/locales-utils/src/test/java/com/spotify/i18n/locales/utils/hierarchy/LocalesHierarchyUtilsTest.java @@ -47,8 +47,8 @@ class LocalesHierarchyUtilsTest { void languageCodesWithMultipleScriptsInCldr() { final Set expectedLanguageCodesWithMultipleScriptsInCldr = Set.of( - "az", "bs", "ff", "hi", "kk", "kok", "ks", "kxv", "mni", "pa", "sat", "sd", "shi", "sr", - "su", "uz", "vai", "yue", "zh"); + "az", "bs", "ff", "hi", "kk", "kok", "ks", "ku", "kxv", "mni", "pa", "sat", "sd", "shi", + "sr", "su", "uz", "vai", "yue", "zh"); assertEquals( expectedLanguageCodesWithMultipleScriptsInCldr.size(), @@ -78,7 +78,7 @@ static Stream getDescendantLocales() { "fr", "fr-BE,fr-BF,fr-BI,fr-BJ,fr-BL,fr-CA,fr-CD,fr-CF,fr-CG,fr-CH,fr-CI,fr-CM,fr-DJ,fr-DZ,fr-FR,fr-GA,fr-GF,fr-GN,fr-GP,fr-GQ,fr-HT,fr-KM,fr-LU,fr-MA,fr-MC,fr-MF,fr-MG,fr-ML,fr-MQ,fr-MR,fr-MU,fr-NC,fr-NE,fr-PF,fr-PM,fr-RE,fr-RW,fr-SC,fr-SN,fr-SY,fr-TD,fr-TG,fr-TN,fr-VU,fr-WF,fr-YT", "en", - "en-001,en-150,en-AE,en-AG,en-AI,en-AS,en-AT,en-AU,en-BB,en-BE,en-BI,en-BM,en-BS,en-BW,en-BZ,en-CA,en-CC,en-CH,en-CK,en-CM,en-CX,en-CY,en-CZ,en-DE,en-DG,en-DK,en-DM,en-ER,en-ES,en-FI,en-FJ,en-FK,en-FM,en-FR,en-GB,en-GD,en-GG,en-GH,en-GI,en-GM,en-GS,en-GU,en-GY,en-HK,en-HU,en-ID,en-IE,en-IL,en-IM,en-IN,en-IO,en-IT,en-JE,en-JM,en-KE,en-KI,en-KN,en-KY,en-LC,en-LR,en-LS,en-MG,en-MH,en-MO,en-MP,en-MS,en-MT,en-MU,en-MV,en-MW,en-MY,en-NA,en-NF,en-NG,en-NL,en-NO,en-NR,en-NU,en-NZ,en-PG,en-PH,en-PK,en-PL,en-PN,en-PR,en-PT,en-PW,en-RO,en-RW,en-SB,en-SC,en-SD,en-SE,en-SG,en-SH,en-SI,en-SK,en-SL,en-SS,en-SX,en-SZ,en-TC,en-TK,en-TO,en-TT,en-TV,en-TZ,en-UG,en-UM,en-US,en-VC,en-VG,en-VI,en-VU,en-WS,en-ZA,en-ZM,en-ZW,hi-Latn,hi-Latn-IN", + "en-001,en-150,en-AE,en-AG,en-AI,en-AS,en-AT,en-AU,en-BB,en-BE,en-BI,en-BM,en-BS,en-BW,en-BZ,en-CA,en-CC,en-CH,en-CK,en-CM,en-CX,en-CY,en-CZ,en-DE,en-DG,en-DK,en-DM,en-EE,en-ER,en-ES,en-FI,en-FJ,en-FK,en-FM,en-FR,en-GB,en-GD,en-GE,en-GG,en-GH,en-GI,en-GM,en-GS,en-GU,en-GY,en-HK,en-HU,en-ID,en-IE,en-IL,en-IM,en-IN,en-IO,en-IT,en-JE,en-JM,en-JP,en-KE,en-KI,en-KN,en-KY,en-LC,en-LR,en-LS,en-LT,en-LV,en-MG,en-MH,en-MO,en-MP,en-MS,en-MT,en-MU,en-MV,en-MW,en-MY,en-NA,en-NF,en-NG,en-NL,en-NO,en-NR,en-NU,en-NZ,en-PG,en-PH,en-PK,en-PL,en-PN,en-PR,en-PT,en-PW,en-RO,en-RW,en-SB,en-SC,en-SD,en-SE,en-SG,en-SH,en-SI,en-SK,en-SL,en-SS,en-SX,en-SZ,en-TC,en-TK,en-TO,en-TT,en-TV,en-TZ,en-UA,en-UG,en-UM,en-US,en-VC,en-VG,en-VI,en-VU,en-WS,en-ZA,en-ZM,en-ZW,hi-Latn,hi-Latn-IN", "zh-Hant", "zh-Hant-HK,zh-Hant-MO,zh-Hant-MY,zh-Hant-TW") .entrySet() @@ -176,42 +176,45 @@ public void allRootChildLocalesAreHighestAncestorLocales() { } } - @Test - public void whenCallingIsLanguageWrittenInSeveralScripts_returnsExpected() { - final Set uniqueLanguageCodes = - AvailableLocalesUtils.getCldrLocales().stream() - .map(ULocale::getLanguage) - .collect(Collectors.toSet()); - for (String languageCode : uniqueLanguageCodes) { - switch (languageCode) { - case "az": - case "bs": - case "ff": - case "hi": - case "kk": - case "kok": - case "ks": - case "kxv": - case "mni": - case "pa": - case "sat": - case "sd": - case "shi": - case "sr": - case "su": - case "uz": - case "vai": - case "yue": - case "zh": - assertTrue(LocalesHierarchyUtils.isLanguageWrittenInSeveralScripts(languageCode)); - break; - default: - assertFalse(LocalesHierarchyUtils.isLanguageWrittenInSeveralScripts(languageCode)); - break; - } + @ParameterizedTest + @MethodSource + void whenCallingIsLanguageWrittenInSeveralScripts_returnsExpected(final String languageCode) { + switch (languageCode) { + case "az": + case "bs": + case "ff": + case "hi": + case "kk": + case "kok": + case "ks": + case "ku": + case "kxv": + case "mni": + case "pa": + case "sat": + case "sd": + case "shi": + case "sr": + case "su": + case "uz": + case "vai": + case "yue": + case "zh": + assertTrue(LocalesHierarchyUtils.isLanguageWrittenInSeveralScripts(languageCode)); + break; + default: + assertFalse(LocalesHierarchyUtils.isLanguageWrittenInSeveralScripts(languageCode)); + break; } } + static Stream whenCallingIsLanguageWrittenInSeveralScripts_returnsExpected() { + return AvailableLocalesUtils.getCldrLocales().stream() + .map(ULocale::getLanguage) + .distinct() + .map(Arguments::of); + } + @ParameterizedTest @MethodSource void emptyParentLocaleForUnsupportedCombinationsOfLanguageScriptCodes(String languageTag) { diff --git a/locales-utils/src/test/java/com/spotify/i18n/locales/utils/language/LanguageUtilsTest.java b/locales-utils/src/test/java/com/spotify/i18n/locales/utils/language/LanguageUtilsTest.java index 4ab5e53..8568db7 100644 --- a/locales-utils/src/test/java/com/spotify/i18n/locales/utils/language/LanguageUtilsTest.java +++ b/locales-utils/src/test/java/com/spotify/i18n/locales/utils/language/LanguageUtilsTest.java @@ -59,6 +59,7 @@ void canGetWrittenLanguageLocaleForCldrAvailableLocales(final ULocale locale) { case "kk": case "kok": case "ks": + case "ku": case "kxv": case "mni": case "pa": @@ -113,8 +114,10 @@ public void confirmLogicAccountsForAllHighestAncestorLocalesWithScript() { "az-Cyrl", // https://www.omniglot.com/writing/azeri.htm "bs-Cyrl", // https://www.omniglot.com/writing/bosnian.htm "ff-Adlm", // https://www.omniglot.com/writing/fula.htm + "kk-Arab", // https://www.omniglot.com/writing/kazakh.htm "kok-Latn", // https://www.omniglot.com/writing/konkani.htm "ks-Deva", // https://www.omniglot.com/writing/kashmiri.htm + "ku-Latn", // https://www.omniglot.com/writing/kurdish.htm "kxv-Deva", // https://www.businesswireindia.com/two-of-indias-endangered-languages-kuvi-and-kangri-get-a-lease-of-revival-as-motorola-and-lenovo-foundation-bring-alive-their-indigenous-languages-digital-inclusion-initiative-83131.html "kxv-Orya", // https://www.businesswireindia.com/two-of-indias-endangered-languages-kuvi-and-kangri-get-a-lease-of-revival-as-motorola-and-lenovo-foundation-bring-alive-their-indigenous-languages-digital-inclusion-initiative-83131.html "kxv-Telu", // https://www.businesswireindia.com/two-of-indias-endangered-languages-kuvi-and-kangri-get-a-lease-of-revival-as-motorola-and-lenovo-foundation-bring-alive-their-indigenous-languages-digital-inclusion-initiative-83131.html diff --git a/pom.xml b/pom.xml index 9ff6722..ae23220 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 4.4.16 1.11.0 33.3.1-jre - 77.1 + 78.3 2.0.0.0 5.11.3 5.12.0