BUG-5410: introduce RegularExpression.toPatternString()
[yangtools.git] / third-party / xsd-regex / src / test / java / org / opendaylight / yangtools / xsd / regex / ToPatternStringTest.java
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 package org.opendaylight.yangtools.xsd.regex;
18
19 import static org.junit.Assert.assertEquals;
20 import java.util.regex.Pattern;
21 import org.junit.Test;
22
23 public class ToPatternStringTest {
24
25     private static void testPattern(final String xsd, final String java) {
26         final RegularExpression regex = new RegularExpression(xsd, "Xu");
27         final String patternString = regex.toPatternString();
28
29         final String expected = '^' + java + "$";
30         assertEquals(expected, patternString);
31         Pattern.compile(patternString);
32     }
33
34     @Test
35     public void testCaret() {
36         testPattern("^", "\\^");
37     }
38
39     @Test
40     public void testTextCaret() {
41         testPattern("abc^", "abc\\^");
42     }
43
44     @Test
45     public void testTextDollar() {
46         testPattern("abc$", "abc\\$");
47     }
48
49     @Test
50     public void testCaretCaret() {
51         testPattern("^^", "\\^\\^");
52     }
53
54     @Test
55     public void testCaretDollar() {
56         testPattern("^$", "\\^\\$");
57     }
58
59     @Test
60     public void testDot() {
61         testPattern(".", ".");
62     }
63
64     @Test
65     public void testNotColon() {
66         testPattern("[^:]+", "[\\x00-9;-\\x{10ffff}]+");
67     }
68
69     @Test
70     public void testDollar() {
71         testPattern("$", "\\$");
72     }
73
74     @Test
75     public void testDollarOneDollar() {
76         testPattern("$1$", "\\$1\\$");
77     }
78
79     @Test
80     public void testDollarPercentRange() {
81         testPattern("[$-%]+", "[\\$-%]+");
82     }
83
84     @Test
85     public void testDollarRange() {
86         testPattern("[$$]+", "[\\$]+");
87     }
88
89     @Test
90     public void testDollarCaretRange() {
91         testPattern("[$^]+", "[\\$\\^]+");
92     }
93
94     @Test
95     public void testSimple() {
96         testPattern("abc", "abc");
97     }
98
99     @Test
100     public void testDotPlus() {
101         testPattern(".+", ".+");
102     }
103
104     @Test
105     public void testDotStar() {
106         testPattern(".*", ".*");
107     }
108
109     @Test
110     public void testSimpleOptional() {
111         testPattern("a?", "a?");
112     }
113
114     @Test
115     public void testRangeOptional() {
116         testPattern("[a-z]?", "[a-z]?");
117     }
118 }