1/* Licensed to the Apache Software Foundation (ASF) under one or more 2 * contributor license agreements. See the NOTICE file distributed with 3 * this work for additional information regarding copyright ownership. 4 * The ASF licenses this file to You under the Apache License, Version 2.0 5 * (the "License"); you may not use this file except in compliance with 6 * the License. You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package org.apache.harmony.tests.java.util.regex; 18 19import java.util.regex.Matcher; 20import java.util.regex.Pattern; 21import java.util.regex.PatternSyntaxException; 22 23import junit.framework.TestCase; 24 25/** 26 * Tests Pattern compilation modes and modes triggered in pattern strings 27 */ 28@SuppressWarnings("nls") 29public class ModeTest extends TestCase { 30 public void testCase() throws PatternSyntaxException { 31 Pattern p; 32 Matcher m; 33 34 p = Pattern.compile("([a-z]+)[0-9]+"); 35 m = p.matcher("cAT123#dog345"); 36 assertTrue(m.find()); 37 assertEquals("dog", m.group(1)); 38 assertFalse(m.find()); 39 40 p = Pattern.compile("([a-z]+)[0-9]+", Pattern.CASE_INSENSITIVE); 41 m = p.matcher("cAt123#doG345"); 42 assertTrue(m.find()); 43 assertEquals("cAt", m.group(1)); 44 assertTrue(m.find()); 45 assertEquals("doG", m.group(1)); 46 assertFalse(m.find()); 47 48 p = Pattern.compile("(?i)([a-z]+)[0-9]+"); 49 m = p.matcher("cAt123#doG345"); 50 assertTrue(m.find()); 51 assertEquals("cAt", m.group(1)); 52 assertTrue(m.find()); 53 assertEquals("doG", m.group(1)); 54 assertFalse(m.find()); 55 } 56 57 public void testMultiline() throws PatternSyntaxException { 58 Pattern p; 59 Matcher m; 60 61 p = Pattern.compile("^foo"); 62 m = p.matcher("foobar"); 63 assertTrue(m.find()); 64 assertTrue(m.start() == 0 && m.end() == 3); 65 assertFalse(m.find()); 66 67 m = p.matcher("barfoo"); 68 assertFalse(m.find()); 69 70 p = Pattern.compile("foo$"); 71 m = p.matcher("foobar"); 72 assertFalse(m.find()); 73 74 m = p.matcher("barfoo"); 75 assertTrue(m.find()); 76 assertTrue(m.start() == 3 && m.end() == 6); 77 assertFalse(m.find()); 78 79 p = Pattern.compile("^foo([0-9]*)", Pattern.MULTILINE); 80 m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4"); 81 assertTrue(m.find()); 82 assertEquals("1", m.group(1)); 83 assertTrue(m.find()); 84 assertEquals("2", m.group(1)); 85 assertFalse(m.find()); 86 87 p = Pattern.compile("foo([0-9]*)$", Pattern.MULTILINE); 88 m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4"); 89 assertTrue(m.find()); 90 assertEquals("3", m.group(1)); 91 assertTrue(m.find()); 92 assertEquals("4", m.group(1)); 93 assertFalse(m.find()); 94 95 p = Pattern.compile("(?m)^foo([0-9]*)"); 96 m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4"); 97 assertTrue(m.find()); 98 assertEquals("1", m.group(1)); 99 assertTrue(m.find()); 100 assertEquals("2", m.group(1)); 101 assertFalse(m.find()); 102 103 p = Pattern.compile("(?m)foo([0-9]*)$"); 104 m = p.matcher("foo1bar\nfoo2foo3\nbarfoo4"); 105 assertTrue(m.find()); 106 assertEquals("3", m.group(1)); 107 assertTrue(m.find()); 108 assertEquals("4", m.group(1)); 109 assertFalse(m.find()); 110 } 111} 112