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