Skip to content

Commit afbf046

Browse files
committed
add tests for locale matching logic in LocaleUtils
1 parent c72e3e4 commit afbf046

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

app/src/test/kotlin/com/vrem/util/LocaleUtilsTest.kt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,62 @@ class LocaleUtilsTest {
104104
assertThat(findByLanguageTag("zh_XX")).isEqualTo(CHINESE)
105105
}
106106

107+
@Test
108+
fun findSupportedLocaleTest() {
109+
val defaultLocale = Locale.getDefault()
110+
111+
// Empty language
112+
assertThat(findSupportedLocale(Locale.forLanguageTag(""))).isEqualTo(defaultLocale)
113+
114+
// Chinese logic
115+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh"))).isEqualTo(CHINESE)
116+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-CN"))).isEqualTo(CHINESE_SIMPLIFIED)
117+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-SG"))).isEqualTo(CHINESE_SIMPLIFIED)
118+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-TW"))).isEqualTo(CHINESE_TRADITIONAL)
119+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-HK"))).isEqualTo(CHINESE_TRADITIONAL)
120+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-MO"))).isEqualTo(CHINESE_TRADITIONAL)
121+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-XX"))).isEqualTo(CHINESE)
122+
123+
// Exact match
124+
assertThat(findSupportedLocale(JAPANESE)).isEqualTo(JAPANESE)
125+
assertThat(findSupportedLocale(PORTUGUESE_BRAZIL)).isEqualTo(PORTUGUESE_BRAZIL)
126+
assertThat(findSupportedLocale(PORTUGUESE_PORTUGAL)).isEqualTo(PORTUGUESE_PORTUGAL)
127+
128+
// Language + Script match
129+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-Hans-US"))).isEqualTo(CHINESE_SIMPLIFIED)
130+
assertThat(findSupportedLocale(Locale.forLanguageTag("zh-Hant-US"))).isEqualTo(CHINESE_TRADITIONAL)
131+
132+
// Language + Country match (fails script match but matches country)
133+
assertThat(findSupportedLocale(Locale.forLanguageTag("pt-Latn-BR"))).isEqualTo(PORTUGUESE_BRAZIL)
134+
assertThat(findSupportedLocale(Locale.forLanguageTag("pt-Latn-PT"))).isEqualTo(PORTUGUESE_PORTUGAL)
135+
136+
// Language only match
137+
assertThat(findSupportedLocale(Locale.forLanguageTag("en-US"))).isEqualTo(ENGLISH)
138+
assertThat(findSupportedLocale(Locale.forLanguageTag("en-GB"))).isEqualTo(ENGLISH)
139+
assertThat(findSupportedLocale(Locale.forLanguageTag("fr-CA"))).isEqualTo(FRENCH)
140+
// pt-Latn-AO (Angola) matches PORTUGUESE_BRAZIL because it is the first 'pt' in the list
141+
assertThat(findSupportedLocale(Locale.forLanguageTag("pt-Latn-AO"))).isEqualTo(PORTUGUESE_BRAZIL)
142+
143+
// No match fallback to default
144+
assertThat(findSupportedLocale(Locale.forLanguageTag("xx"))).isEqualTo(defaultLocale)
145+
}
146+
147+
@Test
148+
fun supportedLanguageTagsTest() {
149+
val actual = supportedLanguageTags()
150+
assertThat(actual).contains("")
151+
assertThat(actual).contains("en")
152+
assertThat(actual).contains("zh-Hans")
153+
assertThat(actual).contains("zh-Hant")
154+
assertThat(actual).hasSize(baseSupportedLocales.size + 1)
155+
}
156+
157+
@Test
158+
fun toSupportedLocaleTagTest() {
159+
assertThat(Locale.forLanguageTag("en-US").toSupportedLocaleTag()).isEqualTo("en")
160+
assertThat(Locale.forLanguageTag("zh-CN").toSupportedLocaleTag()).isEqualTo("zh-Hans")
161+
}
162+
107163
@Test
108164
fun allSupportedLanguages() {
109165
// setup

0 commit comments

Comments
 (0)