Home | History | Annotate | Download | only in regex
      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 
     17 package org.apache.harmony.tests.java.util.regex;
     18 
     19 import java.util.regex.Pattern;
     20 
     21 import junit.framework.TestCase;
     22 
     23 /**
     24  * Test boundary and error conditions in java.util.regex.Pattern
     25  */
     26 @SuppressWarnings("nls")
     27 public class PatternErrorTest extends TestCase {
     28     public void testCompileErrors() throws Exception {
     29         // null regex string - should get NullPointerException
     30         try {
     31             Pattern.compile(null);
     32             fail("NullPointerException expected");
     33         } catch (NullPointerException e) {
     34         }
     35 
     36         // empty regex string - no exception should be thrown
     37         Pattern.compile("");
     38 
     39         // note: invalid regex syntax checked in PatternSyntaxExceptionTest
     40 
     41         // flags = 0 should raise no exception
     42         int flags = 0;
     43         Pattern.compile("foo", flags);
     44 
     45         // check that all valid flags accepted without exception
     46         flags |= Pattern.UNIX_LINES;
     47         flags |= Pattern.CASE_INSENSITIVE;
     48         flags |= Pattern.MULTILINE;
     49         flags |= Pattern.CANON_EQ;
     50         flags |= Pattern.COMMENTS;
     51         flags |= Pattern.DOTALL;
     52         flags |= Pattern.UNICODE_CASE;
     53         flags &= ~Pattern.CANON_EQ; // Android always throws given this flag.
     54         Pattern.compile("foo", flags);
     55 
     56         // add invalid flags - should get IllegalArgumentException
     57         // regression test for HARMONY-4248
     58         flags |= 0xFFFFFFFF;
     59         flags &= ~Pattern.CANON_EQ; // Android always throws given this flag.
     60         try {
     61             Pattern.compile("foo", flags);
     62             fail("Expected IllegalArgumentException to be thrown");
     63         } catch (IllegalArgumentException e) {
     64             // This is the expected exception
     65         }
     66     }
     67 }
     68