1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.harmony.tests.java.util.regex; 19 20 import java.util.regex.Pattern; 21 import java.util.regex.PatternSyntaxException; 22 23 import junit.framework.TestCase; 24 25 /** 26 * TODO Type description 27 */ 28 @SuppressWarnings("nls") 29 public class SplitTest extends TestCase { 30 31 public void testSimple() { 32 Pattern p = Pattern.compile("/"); 33 String[] results = p.split("have/you/done/it/right"); 34 String[] expected = new String[] { "have", "you", "done", "it", "right" }; 35 assertEquals(expected.length, results.length); 36 for (int i = 0; i < expected.length; i++) { 37 assertEquals(results[i], expected[i]); 38 } 39 } 40 41 public void testSplit1() throws PatternSyntaxException { 42 Pattern p = Pattern.compile(" "); 43 44 String input = "poodle zoo"; 45 String tokens[]; 46 47 tokens = p.split(input, 1); 48 assertEquals(1, tokens.length); 49 assertTrue(tokens[0].equals(input)); 50 tokens = p.split(input, 2); 51 assertEquals(2, tokens.length); 52 assertEquals("poodle", tokens[0]); 53 assertEquals("zoo", tokens[1]); 54 tokens = p.split(input, 5); 55 assertEquals(2, tokens.length); 56 assertEquals("poodle", tokens[0]); 57 assertEquals("zoo", tokens[1]); 58 tokens = p.split(input, -2); 59 assertEquals(2, tokens.length); 60 assertEquals("poodle", tokens[0]); 61 assertEquals("zoo", tokens[1]); 62 tokens = p.split(input, 0); 63 assertEquals(2, tokens.length); 64 assertEquals("poodle", tokens[0]); 65 assertEquals("zoo", tokens[1]); 66 tokens = p.split(input); 67 assertEquals(2, tokens.length); 68 assertEquals("poodle", tokens[0]); 69 assertEquals("zoo", tokens[1]); 70 71 p = Pattern.compile("d"); 72 73 tokens = p.split(input, 1); 74 assertEquals(1, tokens.length); 75 assertTrue(tokens[0].equals(input)); 76 tokens = p.split(input, 2); 77 assertEquals(2, tokens.length); 78 assertEquals("poo", tokens[0]); 79 assertEquals("le zoo", tokens[1]); 80 tokens = p.split(input, 5); 81 assertEquals(2, tokens.length); 82 assertEquals("poo", tokens[0]); 83 assertEquals("le zoo", tokens[1]); 84 tokens = p.split(input, -2); 85 assertEquals(2, tokens.length); 86 assertEquals("poo", tokens[0]); 87 assertEquals("le zoo", tokens[1]); 88 tokens = p.split(input, 0); 89 assertEquals(2, tokens.length); 90 assertEquals("poo", tokens[0]); 91 assertEquals("le zoo", tokens[1]); 92 tokens = p.split(input); 93 assertEquals(2, tokens.length); 94 assertEquals("poo", tokens[0]); 95 assertEquals("le zoo", tokens[1]); 96 97 p = Pattern.compile("o"); 98 99 tokens = p.split(input, 1); 100 assertEquals(1, tokens.length); 101 assertTrue(tokens[0].equals(input)); 102 tokens = p.split(input, 2); 103 assertEquals(2, tokens.length); 104 assertEquals("p", tokens[0]); 105 assertEquals("odle zoo", tokens[1]); 106 tokens = p.split(input, 5); 107 assertEquals(5, tokens.length); 108 assertEquals("p", tokens[0]); 109 assertTrue(tokens[1].equals("")); 110 assertEquals("dle z", tokens[2]); 111 assertTrue(tokens[3].equals("")); 112 assertTrue(tokens[4].equals("")); 113 tokens = p.split(input, -2); 114 assertEquals(5, tokens.length); 115 assertEquals("p", tokens[0]); 116 assertTrue(tokens[1].equals("")); 117 assertEquals("dle z", tokens[2]); 118 assertTrue(tokens[3].equals("")); 119 assertTrue(tokens[4].equals("")); 120 tokens = p.split(input, 0); 121 assertEquals(3, tokens.length); 122 assertEquals("p", tokens[0]); 123 assertTrue(tokens[1].equals("")); 124 assertEquals("dle z", tokens[2]); 125 tokens = p.split(input); 126 assertEquals(3, tokens.length); 127 assertEquals("p", tokens[0]); 128 assertTrue(tokens[1].equals("")); 129 assertEquals("dle z", tokens[2]); 130 } 131 132 public void testSplit2() { 133 Pattern p = Pattern.compile(""); 134 String s[]; 135 s = p.split("a", -1); 136 assertEquals(3, s.length); 137 assertEquals("", s[0]); 138 assertEquals("a", s[1]); 139 assertEquals("", s[2]); 140 141 s = p.split("", -1); 142 assertEquals(1, s.length); 143 assertEquals("", s[0]); 144 145 s = p.split("abcd", -1); 146 assertEquals(6, s.length); 147 assertEquals("", s[0]); 148 assertEquals("a", s[1]); 149 assertEquals("b", s[2]); 150 assertEquals("c", s[3]); 151 assertEquals("d", s[4]); 152 assertEquals("", s[5]); 153 } 154 155 public void testSplitSupplementaryWithEmptyString() { 156 157 /* 158 * See http://www.unicode.org/reports/tr18/#Supplementary_Characters We 159 * have to treat text as code points not code units. 160 */ 161 Pattern p = Pattern.compile(""); 162 String s[]; 163 s = p.split("a\ud869\uded6b", -1); 164 assertEquals(5, s.length); 165 assertEquals("", s[0]); 166 assertEquals("a", s[1]); 167 assertEquals("\ud869\uded6", s[2]); 168 assertEquals("b", s[3]); 169 assertEquals("", s[4]); 170 } 171 } 172