1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.regex.tests.java.util.regex; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.regex.*; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests Matcher methods 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(java.util.regex.Matcher.class) 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class Matcher2Test extends TestCase { 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies the basic functionality of toString() method.", 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "toString", 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_toString() { 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile("foo"); 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Matcher m = p.matcher("bar"); 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(m.toString()); 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "start", 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "end", 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "group", 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "start", 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "end", 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "group", 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies start, end, group, usePattern methods with wrong conditions, IllegalStateException should be thrown", 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "usePattern", 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.util.regex.Pattern.class} 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testErrorConditions() throws PatternSyntaxException { 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test match cursors in absence of a match 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile("foo"); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Matcher m = p.matcher("bar"); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(m.matches()); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(); 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(); 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(1); 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(1); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(1); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for HARMONY-2418 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.usePattern(null); 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // PASSED 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies end, start, group methods with wrong conditions, IndexOutOfBoundsException, IllegalStateException should be thrown", 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "start", 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies end, start, group methods with wrong conditions, IndexOutOfBoundsException, IllegalStateException should be thrown", 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "end", 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies end, start, group methods with wrong conditions, IndexOutOfBoundsException, IllegalStateException should be thrown", 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "start", 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies end, start, group methods with wrong conditions, IndexOutOfBoundsException, IllegalStateException should be thrown", 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "end", 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies end, start, group methods with wrong conditions, IndexOutOfBoundsException, IllegalStateException should be thrown", 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "group", 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testErrorConditions2() throws PatternSyntaxException { 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test match cursors in absence of a match 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern p = Pattern.compile("(foo[0-9])(bar[a-z])"); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Matcher m = p.matcher("foo1barzfoo2baryfoozbar5"); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(m.find()); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, m.start()); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(8, m.end()); 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, m.start(1)); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(4, m.end(1)); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(4, m.start(2)); 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(8, m.end(2)); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(3); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(3); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(3); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(-1); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(-1); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(-1); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(m.find()); 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(8, m.start()); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(16, m.end()); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(8, m.start(1)); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(12, m.end(1)); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(12, m.start(2)); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(16, m.end(2)); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(3); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(3); 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(3); 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(-1); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(-1); 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(-1); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected"); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(m.find()); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(3); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(3); 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(3); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.start(-1); 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.end(-1); 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m.group(-1); 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Regression test for HARMONY-997 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies that IndexOutOfBoundsException exception is thrown while calling of replaceAll method with incorrect string.", 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "replaceAll", 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReplacementBackSlash() { 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String str = "replace me"; 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String replacedString = "me"; 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String substitutionString = "\\"; 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Pattern pat = Pattern.compile(replacedString); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Matcher mat = pat.matcher(str); 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String res = mat.replaceAll(substitutionString); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException should be thrown - " + res); 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 328