Locale-agnostic case conversions by default #KT-43023
This commit is contained in:
@@ -75,53 +75,67 @@ class StringJVMTest {
|
||||
}
|
||||
|
||||
@Test fun capitalize() {
|
||||
fun testCapitalize(expected: String, string: String) {
|
||||
assertEquals(expected, string.capitalize())
|
||||
assertEquals(expected, string.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() })
|
||||
}
|
||||
// Case mapping that results in multiple characters (validating Character.toUpperCase was not used).
|
||||
assertEquals("SSßß", "ßßß".capitalize())
|
||||
assertEquals("Ssßß", "ßßß".replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() })
|
||||
|
||||
// Case mapping where title case is different than uppercase and so Character.toTitleCase is preferred.
|
||||
assertEquals("Dzdzdz", "dzdzdz".capitalize())
|
||||
assertEquals("DZDZDZ", "DZDZDZ".capitalize())
|
||||
testCapitalize("Dzdzdz", "dzdzdz")
|
||||
testCapitalize("DZDZDZ", "DZDZDZ")
|
||||
}
|
||||
|
||||
@Test fun decapitalize() {
|
||||
assertEquals("aBC", "ABC".decapitalize())
|
||||
assertEquals("abc", "Abc".decapitalize())
|
||||
assertEquals("abc", "abc".decapitalize())
|
||||
|
||||
fun testDecapitalize(expected: String, string: String) {
|
||||
assertEquals(expected, string.decapitalize())
|
||||
assertEquals(expected, string.replaceFirstChar { it.lowercase(Locale.getDefault()) })
|
||||
}
|
||||
// Case mapping where title case is different than uppercase.
|
||||
assertEquals("dzdzdz", "DZdzdz".decapitalize())
|
||||
assertEquals("dzdzdz", "Dzdzdz".decapitalize())
|
||||
testDecapitalize("dzdzdz", "DZdzdz")
|
||||
testDecapitalize("dzdzdz", "Dzdzdz")
|
||||
}
|
||||
|
||||
@Test fun capitalizeLocale() {
|
||||
assertEquals("ABC", "ABC".capitalize(Locale.US))
|
||||
assertEquals("Abc", "Abc".capitalize(Locale.US))
|
||||
assertEquals("Abc", "abc".capitalize(Locale.US))
|
||||
fun testCapitalizeLocale(expected: String, string: String, locale: Locale) {
|
||||
assertEquals(expected, string.capitalize(locale))
|
||||
assertEquals(expected, string.replaceFirstChar { if (it.isLowerCase()) it.titlecase(locale) else it.toString() })
|
||||
}
|
||||
testCapitalizeLocale("ABC", "ABC", Locale.US)
|
||||
testCapitalizeLocale("Abc", "Abc", Locale.US)
|
||||
testCapitalizeLocale("Abc", "abc", Locale.US)
|
||||
|
||||
// Locale-specific case mappings.
|
||||
assertEquals("İii", "iii".capitalize(Locale("tr", "TR")))
|
||||
assertEquals("Iii", "iii".capitalize(Locale.US))
|
||||
testCapitalizeLocale("İii", "iii", Locale("tr", "TR"))
|
||||
testCapitalizeLocale("Iii", "iii", Locale.US)
|
||||
|
||||
// Case mapping that results in multiple characters (validating Character.toUpperCase was not used).
|
||||
assertEquals("SSßß", "ßßß".capitalize(Locale.US))
|
||||
assertEquals("Ssßß", "ßßß".replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.US) else it.toString() })
|
||||
|
||||
// Case mapping where title case is different than uppercase and so Character.toTitleCase is preferred.
|
||||
assertEquals("Dzdzdz", "dzdzdz".capitalize(Locale.US))
|
||||
assertEquals("DZDZDZ", "DZDZDZ".capitalize(Locale.US))
|
||||
testCapitalizeLocale("Dzdzdz", "dzdzdz", Locale.US)
|
||||
testCapitalizeLocale("DZDZDZ", "DZDZDZ", Locale.US)
|
||||
}
|
||||
|
||||
@Test fun decapitalizeLocale() {
|
||||
assertEquals("aBC", "ABC".decapitalize(Locale.US))
|
||||
assertEquals("abc", "Abc".decapitalize(Locale.US))
|
||||
assertEquals("abc", "abc".decapitalize(Locale.US))
|
||||
fun testDecapitalizeLocale(expected: String, string: String, locale: Locale) {
|
||||
assertEquals(expected, string.decapitalize(locale))
|
||||
assertEquals(expected, string.replaceFirstChar { it.lowercase(locale) })
|
||||
}
|
||||
testDecapitalizeLocale("aBC", "ABC", Locale.US)
|
||||
testDecapitalizeLocale("abc", "Abc", Locale.US)
|
||||
testDecapitalizeLocale("abc", "abc", Locale.US)
|
||||
|
||||
// Locale-specific case mappings.
|
||||
assertEquals("ıII", "III".decapitalize(Locale("tr", "TR")))
|
||||
assertEquals("iII", "III".decapitalize(Locale.US))
|
||||
testDecapitalizeLocale("ıII", "III", Locale("tr", "TR"))
|
||||
testDecapitalizeLocale("iII", "III", Locale.US)
|
||||
|
||||
// Case mapping where title case is different than uppercase.
|
||||
assertEquals("dzdzdz", "DZdzdz".decapitalize(Locale.US))
|
||||
assertEquals("dzdzdz", "Dzdzdz".decapitalize(Locale.US))
|
||||
testDecapitalizeLocale("dzdzdz", "DZdzdz", Locale.US)
|
||||
testDecapitalizeLocale("dzdzdz", "Dzdzdz", Locale.US)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user