View Javadoc
1   /*
2    * Copyright (c) 2002-2025 Gargoyle Software Inc.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * https://www.apache.org/licenses/LICENSE-2.0
8    *
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.htmlunit.javascript.regexp.mozilla.js1_2;
16  
17  import org.htmlunit.WebDriverTestCase;
18  import org.htmlunit.junit.BrowserRunner;
19  import org.htmlunit.junit.annotation.Alerts;
20  import org.junit.Test;
21  import org.junit.runner.RunWith;
22  
23  /**
24   * Tests originally in '/js/src/tests/js1_2/regexp/compile.js'.
25   *
26   * @author Ahmed Ashour
27   */
28  @RunWith(BrowserRunner.class)
29  public class CompileTest extends WebDriverTestCase {
30  
31      /**
32       * Tests '234X456X7890'.match(regularExpression).
33       * @throws Exception if the test fails
34       */
35      @Test
36      @Alerts("456X7890")
37      public void test1() throws Exception {
38          final String initialScript = "var regularExpression = new RegExp();\n"
39              + "regularExpression.compile('[0-9]{3}x[0-9]{4}', 'i');";
40          test(initialScript, "'234X456X7890'.match(regularExpression)");
41      }
42  
43      /**
44       * Tests regularExpression.source.
45       * @throws Exception if the test fails
46       */
47      @Test
48      @Alerts("[0-9]{3}x[0-9]{4}")
49      public void test2() throws Exception {
50          final String initialScript = "var regularExpression = new RegExp();\n"
51              + "regularExpression.compile('[0-9]{3}x[0-9]{4}', 'i');";
52          test(initialScript, "regularExpression.source");
53      }
54  
55      /**
56       * Tests regularExpression.global.
57       * @throws Exception if the test fails
58       */
59      @Test
60      @Alerts("false")
61      public void test3() throws Exception {
62          final String initialScript = "var regularExpression = new RegExp();\n"
63              + "regularExpression.compile('[0-9]{3}x[0-9]{4}', 'i');";
64          test(initialScript, "regularExpression.global");
65      }
66  
67      /**
68       * Tests regularExpression.ignoreCase.
69       * @throws Exception if the test fails
70       */
71      @Test
72      @Alerts("true")
73      public void test4() throws Exception {
74          final String initialScript = "var regularExpression = new RegExp();\n"
75              + "regularExpression.compile('[0-9]{3}x[0-9]{4}', 'i');";
76          test(initialScript, "regularExpression.ignoreCase");
77      }
78  
79      /**
80       * Tests '234X456X7890'.match(regularExpression).
81       * @throws Exception if the test fails
82       */
83      @Test
84      @Alerts("234X456")
85      public void test5() throws Exception {
86          final String initialScript = "var regularExpression = new RegExp();\n"
87              + "regularExpression.compile('[0-9]{3}X[0-9]{3}', 'g')";
88          test(initialScript, "'234X456X7890'.match(regularExpression)");
89      }
90  
91      /**
92       * Tests regularExpression.source.
93       * @throws Exception if the test fails
94       */
95      @Test
96      @Alerts("[0-9]{3}X[0-9]{3}")
97      public void test6() throws Exception {
98          final String initialScript = "var regularExpression = new RegExp();\n"
99              + "regularExpression.compile('[0-9]{3}X[0-9]{3}', 'g')";
100         test(initialScript, "regularExpression.source");
101     }
102 
103     /**
104      * Tests regularExpression.global.
105      * @throws Exception if the test fails
106      */
107     @Test
108     @Alerts("true")
109     public void test7() throws Exception {
110         final String initialScript = "var regularExpression = new RegExp();\n"
111             + "regularExpression.compile('[0-9]{3}X[0-9]{3}', 'g')";
112         test(initialScript, "regularExpression.global");
113     }
114 
115     /**
116      * Tests regularExpression.ignoreCase.
117      * @throws Exception if the test fails
118      */
119     @Test
120     @Alerts("false")
121     public void test8() throws Exception {
122         final String initialScript = "var regularExpression = new RegExp();\n"
123             + "regularExpression.compile('[0-9]{3}X[0-9]{3}', 'g')";
124         test(initialScript, "regularExpression.ignoreCase");
125     }
126 
127     private void test(final String initialScript, final String script) throws Exception {
128         String html = "<html><head><script>\n"
129                         + LOG_TITLE_FUNCTION;
130         if (initialScript != null) {
131             html += initialScript + ";\n";
132         }
133         html += "  log(" + script + ");\n"
134             + "</script></head><body>\n"
135             + "</body></html>";
136         loadPageVerifyTitle2(html);
137     }
138 }