1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* Licensed to the Apache Software Foundation (ASF) under one or more
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership.
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License.  You may obtain a copy of the License at
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License.
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.tests.java.util.regex;
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.regex.Matcher;
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.regex.Pattern;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.regex.PatternSyntaxException;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests Pattern compilation modes and modes triggered in pattern strings
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes@SuppressWarnings("nls")
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ModeTest extends TestCase {
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testCase() throws PatternSyntaxException {
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Pattern p;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Matcher m;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("([a-z]+)[0-9]+");
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("cAT123#dog345");
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("dog", m.group(1));
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("([a-z]+)[0-9]+", Pattern.CASE_INSENSITIVE);
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("cAt123#doG345");
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("cAt", m.group(1));
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("doG", m.group(1));
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("(?i)([a-z]+)[0-9]+");
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("cAt123#doG345");
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("cAt", m.group(1));
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("doG", m.group(1));
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testMultiline() throws PatternSyntaxException {
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Pattern p;
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Matcher m;
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("^foo");
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foobar");
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.start() == 0 && m.end() == 3);
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("barfoo");
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("foo$");
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foobar");
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("barfoo");
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.start() == 3 && m.end() == 6);
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("^foo([0-9]*)", Pattern.MULTILINE);
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4");
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("1", m.group(1));
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("2", m.group(1));
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("foo([0-9]*)$", Pattern.MULTILINE);
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4");
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("3", m.group(1));
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("4", m.group(1));
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("(?m)^foo([0-9]*)");
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4");
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("1", m.group(1));
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("2", m.group(1));
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        p = Pattern.compile("(?m)foo([0-9]*)$");
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4");
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("3", m.group(1));
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(m.find());
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("4", m.group(1));
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(m.find());
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
112