diff --git a/kotlin-native/backend.native/tests/stdlib_external/text/CharNativeTest.kt b/kotlin-native/backend.native/tests/stdlib_external/text/CharNativeTest.kt new file mode 100644 index 00000000000..7c83bb45077 --- /dev/null +++ b/kotlin-native/backend.native/tests/stdlib_external/text/CharNativeTest.kt @@ -0,0 +1,72 @@ + +package test.text + +import kotlin.test.* + +class CharNativeTest { + + @Test + fun lowercaseChar() { + // large mapping + assertEquals('\u0239', '\u0239'.lowercaseChar()) + assertEquals('\u2C65', '\u023A'.lowercaseChar()) + assertEquals('\u023C', '\u023B'.lowercaseChar()) + + // large negative mapping + assertEquals('\u2C7D', '\u2C7D'.lowercaseChar()) + assertEquals('\u023F', '\u2C7E'.lowercaseChar()) + assertEquals('\u0240', '\u2C7F'.lowercaseChar()) + + // + assertEquals('\u2C81', '\u2C80'.lowercaseChar()) + assertEquals('\u2C81', '\u2C81'.lowercaseChar()) + assertEquals('\u2C83', '\u2C82'.lowercaseChar()) + } + + @Test + fun uppercaseChar() { + // large mapping + assertEquals('\u029C', '\u029C'.uppercaseChar()) + assertEquals('\uA7B2', '\u029D'.uppercaseChar()) + assertEquals('\uA7B0', '\u029E'.uppercaseChar()) + assertEquals('\u029F', '\u029F'.uppercaseChar()) + + // large negative mapping + assertEquals('\uAB6F', '\uAB6F'.uppercaseChar()) + assertEquals('\u13A0', '\uAB70'.uppercaseChar()) + assertEquals('\u13EF', '\uABBF'.uppercaseChar()) + assertEquals('\uABC0', '\uABC0'.uppercaseChar()) + } + + @Test + fun titlecaseChar() { + // titlecaseChar == char && uppercaseChar != char + assertEquals('\u10CF'.uppercaseChar(), '\u10CF'.titlecaseChar()) + for (char in '\u10D0'..'\u10FA') { + assertEquals(char, char.titlecaseChar()) + assertNotEquals(char, char.uppercaseChar()) + } + for (char in '\u10FB'..'\u10FC') { + assertEquals(char, char.titlecaseChar()) + assertEquals(char, char.uppercaseChar()) + } + for (char in '\u10FD'..'\u10FF') { + assertEquals(char, char.titlecaseChar()) + assertNotEquals(char, char.uppercaseChar()) + } + assertEquals('\u1100'.uppercaseChar(), '\u1100'.titlecaseChar()) + } + + @Test + fun lowercase() { + // LATIN CAPITAL LETTER I WITH DOT ABOVE + assertEquals("\u0069\u0307", '\u0130'.lowercase()) + } + + fun titlecase() { + // titlecase = titlecaseChar = char != uppercaseChar + assertEquals('\u10F0'.titlecaseChar().toString(), '\u10F0'.titlecase()) + assertEquals('\u10F0', '\u10F0'.titlecaseChar()) + assertNotEquals('\u10F0', '\u10F0'.uppercaseChar()) + } +}