Backport String.isBlank/strip/stripLeading/stripTrailing
Test: tools/test.py --dex_vm all --no-internal -v *Backport*Test*
Test: tools/test.py --no-internal -v *GenerateBackportMethods*
Change-Id: I8741da099597e06e7115ef92c2e622d67f8bb0a3
diff --git a/src/test/examplesJava11/backport/StringBackportJava11Main.java b/src/test/examplesJava11/backport/StringBackportJava11Main.java
index 2af923e..6af33fa 100644
--- a/src/test/examplesJava11/backport/StringBackportJava11Main.java
+++ b/src/test/examplesJava11/backport/StringBackportJava11Main.java
@@ -3,6 +3,10 @@
public final class StringBackportJava11Main {
public static void main(String[] args) {
testRepeat();
+ testIsBlank();
+ testStrip();
+ testStripLeading();
+ testStripTrailing();
}
private static void testRepeat() {
@@ -23,6 +27,102 @@
assertEquals("heyheyheyhey", "hey".repeat(4));
}
+ /** Per {@link Character#isWhitespace(int)} */
+ private static final String WHITESPACE = ""
+ // Unicode "Zs" category:
+ + "\u0020"
+ + "\u1680"
+ //+ "\u00A0" Exception per Javadoc
+ + "\u1680"
+ + "\u2000"
+ + "\u2001"
+ + "\u2002"
+ + "\u2003"
+ + "\u2004"
+ + "\u2005"
+ + "\u2006"
+ //+ "\u2007" Exception per Javadoc
+ + "\u2008"
+ + "\u2009"
+ + "\u200A"
+ //+ "\u200F" Exception per Javadoc
+ //+ "\u205F" Not honored on Android 4.0.4
+ + "\u3000"
+ // Unicode "Zl" category:
+ + "\u2028"
+ // Unicode "Zp" category:
+ + "\u2029"
+ // Others:
+ + "\t"
+ + "\n"
+ + "\u000B"
+ + "\f"
+ + "\r"
+ + "\u001C"
+ + "\u001D"
+ + "\u001E"
+ + "\u001F"
+ ;
+
+ public static void testIsBlank() {
+ assertEquals(true, "".isBlank());
+ assertEquals(true, WHITESPACE.isBlank());
+
+ // Android <=4.0.4 does not recognize this as whitespace. Just ensure local consistency.
+ assertEquals(Character.isWhitespace(0x205F), "\u205F".isBlank());
+
+ assertEquals(false, "a".isBlank());
+ assertEquals(false, "å".isBlank());
+ assertEquals(false, "a\u030A".isBlank());
+ assertEquals(false, "\uD83D\uDE00".isBlank());
+ assertEquals(false, (WHITESPACE + "a").isBlank());
+ assertEquals(false, ("a" + WHITESPACE).isBlank());
+ }
+
+ public static void testStrip() {
+ assertEquals("", "".strip());
+ assertEquals("", WHITESPACE.strip());
+ assertEquals("a", "a".strip());
+ assertEquals("a", (WHITESPACE + "a").strip());
+ assertEquals("a", ("a" + WHITESPACE).strip());
+ assertEquals("a", (WHITESPACE + "a" + WHITESPACE).strip());
+ assertEquals("a" + WHITESPACE + "a", ("a" + WHITESPACE + "a").strip());
+ assertEquals("a" + WHITESPACE + "a", (WHITESPACE + "a" + WHITESPACE + "a").strip());
+ assertEquals("a" + WHITESPACE + "a", ("a" + WHITESPACE + "a" + WHITESPACE).strip());
+ assertEquals("a" + WHITESPACE + "a",
+ (WHITESPACE + "a" + WHITESPACE + "a" + WHITESPACE).strip());
+ }
+
+ public static void testStripLeading() {
+ assertEquals("", "".stripLeading());
+ assertEquals("", WHITESPACE.stripLeading());
+ assertEquals("a", "a".stripLeading());
+ assertEquals("a", (WHITESPACE + "a").stripLeading());
+ assertEquals("a" + WHITESPACE, ("a" + WHITESPACE).stripLeading());
+ assertEquals("a" + WHITESPACE, (WHITESPACE + "a" + WHITESPACE).stripLeading());
+ assertEquals("a" + WHITESPACE + "a", ("a" + WHITESPACE + "a").stripLeading());
+ assertEquals("a" + WHITESPACE + "a", (WHITESPACE + "a" + WHITESPACE + "a").stripLeading());
+ assertEquals("a" + WHITESPACE + "a" + WHITESPACE,
+ ("a" + WHITESPACE + "a" + WHITESPACE).stripLeading());
+ assertEquals("a" + WHITESPACE + "a" + WHITESPACE,
+ (WHITESPACE + "a" + WHITESPACE + "a" + WHITESPACE).stripLeading());
+ }
+
+ public static void testStripTrailing() {
+ assertEquals("", "".stripTrailing());
+ assertEquals("", WHITESPACE.stripTrailing());
+ assertEquals("a", "a".stripTrailing());
+ assertEquals(WHITESPACE + "a", (WHITESPACE + "a").stripTrailing());
+ assertEquals("a", ("a" + WHITESPACE).stripTrailing());
+ assertEquals(WHITESPACE + "a", (WHITESPACE + "a" + WHITESPACE).stripTrailing());
+ assertEquals("a" + WHITESPACE + "a", ("a" + WHITESPACE + "a").stripTrailing());
+ assertEquals(WHITESPACE + "a" + WHITESPACE + "a",
+ (WHITESPACE + "a" + WHITESPACE + "a").stripTrailing());
+ assertEquals("a" + WHITESPACE + "a", ("a" + WHITESPACE + "a" + WHITESPACE).stripTrailing());
+ assertEquals(WHITESPACE + "a" + WHITESPACE + "a",
+ (WHITESPACE + "a" + WHITESPACE + "a" + WHITESPACE).stripTrailing());
+ }
+
private static void assertEquals(Object expected, Object actual) {
if (expected != actual && (expected == null || !expected.equals(actual))) {
throw new AssertionError("Expected <" + expected + "> but was <" + actual + '>');