1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.regex.tests.java.util.regex; 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.regex.*; 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(java.util.regex.Pattern.class) 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * TODO Type description 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SplitTest extends TestCase { 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the basic functionality of split(java.lang.CharSequence) & compile(java.lang.String)methods.", 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "split", 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.CharSequence.class} 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the basic functionality of split(java.lang.CharSequence) & compile(java.lang.String)methods.", 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "compile", 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSimple() { 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile("/"); 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String[] results = p.split("have/you/done/it/right"); 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String[] expected = new String[] { "have", "you", "done", "it", "right" }; 35870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(expected, results); 36870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes } 37870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 38870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes @TestTargets({ 39870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes @TestTargetNew( 40870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes level = TestLevel.PARTIAL_COMPLETE, 41870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes notes = "Verifies the basic functionality of split with empty matches.", 42870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes method = "split", 43870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes args = {java.lang.CharSequence.class} 44870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes ) 45870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes }) 46870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes public void testEmptySplits() { 47870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // Trailing empty matches are removed. 48870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[0], "hello".split(".")); 49870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "1", "2" }, "1:2:".split(":")); 50870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // ...including when that results in an empty result. 51870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[0], ":".split(":")); 52870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // ...but not when limit < 0. 53870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "1", "2", "" }, "1:2:".split(":", -1)); 54870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 55870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // Leading empty matches are retained. 56870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "", "", "o" }, "hello".split("..")); 57870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 58870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // A separator that doesn't occur in the input gets you the input. 59870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "hello" }, "hello".split("not-present-in-test")); 60870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // ...including when the input is the empty string. 61870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // (Perl returns an empty list instead.) 62870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "" }, "".split("not-present-in-test")); 63870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "" }, "".split("A?")); 64870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 65870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // The limit argument controls the size of the result. 66870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // If l == 0, the result is as long as needed, except trailing empty matches are dropped. 67870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // If l < 0, the result is as long as needed, and trailing empty matches are retained. 68870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // If l > 0, the result contains the first l matches, plus one string containing the remaining input. 69870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // Examples without a trailing separator (and hence without a trailing empty match): 70870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c" }, "a,b,c".split(",", 0)); 71870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a,b,c" }, "a,b,c".split(",", 1)); 72870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b,c" }, "a,b,c".split(",", 2)); 73870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c" }, "a,b,c".split(",", 3)); 74870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c" }, "a,b,c".split(",", Integer.MAX_VALUE)); 75870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes // Examples with a trailing separator (and hence possibly with a trailing empty match): 76870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c" }, "a,b,c,".split(",", 0)); 77870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a,b,c," }, "a,b,c,".split(",", 1)); 78870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b,c," }, "a,b,c,".split(",", 2)); 79870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c," }, "a,b,c,".split(",", 3)); 80870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c", "" }, "a,b,c,".split(",", Integer.MAX_VALUE)); 81870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertArraysEqual(new String[] { "a", "b", "c", "" }, "a,b,c,".split(",", -1)); 82870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes } 83870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 84870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes private void assertArraysEqual(String[] expected, String[] actual) { 85870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertEquals(expected.length, actual.length); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < expected.length; i++) { 87870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes assertEquals(Integer.toString(i), expected[i], actual[i]); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 90870fd9b66c51b18966fb18ec65705efab9cf0d50Elliott Hughes 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the functionality of split(java.lang.CharSequence). Test uses not empty pattern.", 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "split", 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.CharSequence.class, int.class} 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSplit1() throws PatternSyntaxException { 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile(" "); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String input = "poodle zoo"; 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String tokens[]; 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 1); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, tokens.length); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[0].equals(input)); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 2); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poodle", tokens[0]); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("zoo", tokens[1]); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 5); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poodle", tokens[0]); 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("zoo", tokens[1]); 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, -2); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poodle", tokens[0]); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("zoo", tokens[1]); 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 0); 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poodle", tokens[0]); 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("zoo", tokens[1]); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input); 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poodle", tokens[0]); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("zoo", tokens[1]); 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p = Pattern.compile("d"); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 1); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, tokens.length); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[0].equals(input)); 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 2); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poo", tokens[0]); 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("le zoo", tokens[1]); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 5); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poo", tokens[0]); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("le zoo", tokens[1]); 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, -2); 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poo", tokens[0]); 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("le zoo", tokens[1]); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 0); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poo", tokens[0]); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("le zoo", tokens[1]); 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("poo", tokens[0]); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("le zoo", tokens[1]); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project p = Pattern.compile("o"); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 1); 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, tokens.length); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[0].equals(input)); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 2); 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, tokens.length); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("p", tokens[0]); 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("odle zoo", tokens[1]); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 5); 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, tokens.length); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("p", tokens[0]); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[1].equals("")); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("dle z", tokens[2]); 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[3].equals("")); 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[4].equals("")); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, -2); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, tokens.length); 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("p", tokens[0]); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[1].equals("")); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("dle z", tokens[2]); 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[3].equals("")); 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[4].equals("")); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input, 0); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, tokens.length); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("p", tokens[0]); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[1].equals("")); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("dle z", tokens[2]); 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project tokens = p.split(input); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, tokens.length); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("p", tokens[0]); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(tokens[1].equals("")); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("dle z", tokens[2]); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the functionality of split(java.lang.CharSequence). Test uses empty pattern.", 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "split", 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.CharSequence.class, int.class} 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSplit2() { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile(""); 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String s[]; 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = p.split("a", -1); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, s.length); 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[0]); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("a", s[1]); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[2]); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = p.split("", -1); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, s.length); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[0]); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = p.split("abcd", -1); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(6, s.length); 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[0]); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("a", s[1]); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("b", s[2]); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("c", s[3]); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("d", s[4]); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[5]); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Regression test for Android 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("GOOG,23,500".split("|").length, 12); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the functionality of split(java.lang.CharSequence) & compile(java.lang.String, int) methods. Test uses empty pattern and supplementary chars.", 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "split", 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.CharSequence.class, int.class} 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the functionality of split(java.lang.CharSequence) & compile(java.lang.String, int) methods. Test uses empty pattern and supplementary chars.", 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "compile", 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSplitSupplementaryWithEmptyString() { 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See http://www.unicode.org/reports/tr18/#Supplementary_Characters 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * We have to treat text as code points not code units. 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile(""); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String s[]; 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = p.split("a\ud869\uded6b", -1); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, s.length); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[0]); 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("a", s[1]); 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("\ud869\uded6", s[2]); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("b", s[3]); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("", s[4]); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 252