1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
7f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
9f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.regex.tests.java.util.regex;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.regex.*;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests Matcher methods
24f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class Matcher2Test extends TestCase {
27f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_toString() {
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Pattern p = Pattern.compile("foo");
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Matcher m = p.matcher("bar");
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(m.toString());
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testErrorConditions() throws PatternSyntaxException {
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test match cursors in absence of a match
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Pattern p = Pattern.compile("foo");
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Matcher m = p.matcher("bar");
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(m.matches());
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start();
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end();
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group();
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(1);
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(1);
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(1);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project               // regression test for HARMONY-2418
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.usePattern(null);
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 // PASSED
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testErrorConditions2() throws PatternSyntaxException {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test match cursors in absence of a match
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Pattern p = Pattern.compile("(foo[0-9])(bar[a-z])");
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Matcher m = p.matcher("foo1barzfoo2baryfoozbar5");
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(m.find());
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, m.start());
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(8, m.end());
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, m.start(1));
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(4, m.end(1));
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(4, m.start(2));
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(8, m.end(2));
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(3);
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(3);
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(3);
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(-1);
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(-1);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(-1);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(m.find());
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(8, m.start());
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(16, m.end());
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(8, m.start(1));
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(12, m.end(1));
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(12, m.start(2));
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(16, m.end(2));
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(3);
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(3);
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(3);
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(-1);
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(-1);
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(-1);
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException expected");
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IndexOutOfBoundsException e) {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(m.find());
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(3);
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(3);
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(3);
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.start(-1);
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.end(-1);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            m.group(-1);
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
216f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Regression test for HARMONY-997
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testReplacementBackSlash() {
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String str = "replace me";
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String replacedString = "me";
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String substitutionString = "\\";
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Pattern pat = Pattern.compile(replacedString);
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Matcher mat = pat.matcher(str);
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String res = mat.replaceAll(substitutionString);
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IndexOutOfBoundsException should be thrown - " + res);
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
234