Home | History | Annotate | Download | only in regex
      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