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