Add Character.isTitleCase. PiperOrigin-RevId: 355341342 Change-Id: I0d57f07dab3905299d519f90f487e461259da79e
diff --git a/user/super/com/google/gwt/emul/java/lang/Character.java b/user/super/com/google/gwt/emul/java/lang/Character.java index 345a629..9bef6a5 100644 --- a/user/super/com/google/gwt/emul/java/lang/Character.java +++ b/user/super/com/google/gwt/emul/java/lang/Character.java
@@ -18,7 +18,6 @@ import static javaemul.internal.InternalPreconditions.checkCriticalArgument; import java.io.Serializable; - import javaemul.internal.NativeRegExp; /** @@ -44,7 +43,6 @@ * - isISOControl(char) * - isMirrored(char) * - isSpaceChar(char) - * - isTitleCase(char) * - isUnicodeIdentifierPart(char) * - isUnicodeIdentifierStart(char) * - getDirectionality(*) @@ -329,6 +327,11 @@ return isHighSurrogate(highSurrogate) && isLowSurrogate(lowSurrogate); } + public static boolean isTitleCase(char c) { + // https://www.compart.com/en/unicode/category/Lt + return c != toUpperCase(c) && c != toLowerCase(c); + } + /* * TODO: correct Unicode handling. */
diff --git a/user/test/com/google/gwt/emultest/java/lang/CharacterTest.java b/user/test/com/google/gwt/emultest/java/lang/CharacterTest.java index e843146..426e817 100644 --- a/user/test/com/google/gwt/emultest/java/lang/CharacterTest.java +++ b/user/test/com/google/gwt/emultest/java/lang/CharacterTest.java
@@ -16,6 +16,7 @@ package com.google.gwt.emultest.java.lang; import com.google.gwt.junit.client.GWTTestCase; +import java.util.Arrays; /** * Tests for java.lang.Character. @@ -416,6 +417,52 @@ } } + public void test_isTitleCaseC() { + char[] expectedTitleCaseChars = { + (char) 0x01c5, + (char) 0x01c8, + (char) 0x01cb, + (char) 0x01f2, + (char) 0x1f88, + (char) 0x1f89, + (char) 0x1f8a, + (char) 0x1f8b, + (char) 0x1f8c, + (char) 0x1f8d, + (char) 0x1f8e, + (char) 0x1f8f, + (char) 0x1f98, + (char) 0x1f99, + (char) 0x1f9a, + (char) 0x1f9b, + (char) 0x1f9c, + (char) 0x1f9d, + (char) 0x1f9e, + (char) 0x1f9f, + (char) 0x1fa8, + (char) 0x1fa9, + (char) 0x1faa, + (char) 0x1fab, + (char) 0x1fac, + (char) 0x1fad, + (char) 0x1fae, + (char) 0x1faf, + (char) 0x1fbc, + (char) 0x1fcc, + (char) 0x1ffc + }; + + char[] foundChars = new char[expectedTitleCaseChars.length]; + int lastFoundCharIndex = 0; + for (char c = 0; c < 65535; c++) { + if (Character.isTitleCase(c)) { + foundChars[lastFoundCharIndex++] = c; + } + } + + assertTrue(Arrays.equals(expectedTitleCaseChars, foundChars)); + } + public void testToString() { assertEquals(" ", new Character((char) 32).toString()); }