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.annotation.Alerts;
19  import org.junit.jupiter.api.Test;
20  
21  /**
22   * Tests originally in '/js/src/tests/js1_2/regexp/everything.js'.
23   *
24   * @author Ahmed Ashour
25   * @author Ronald Brill
26   */
27  public class EverythingTest extends WebDriverTestCase {
28  
29      /**
30       * Tests 'Sally and Fred are sure to come'.match(/^[a-z\s]*\/i).
31       * @throws Exception if the test fails
32       */
33      @Test
34      @Alerts("Sally and Fred are sure to come")
35      public void test1() throws Exception {
36          test("'Sally and Fred are sure to come'.match(/^[a-z\\s]*/i)");
37      }
38  
39      /**
40       * Tests 'test123W+xyz'.match(new RegExp('^[a-z]*[0-9]+[A-Z]?.(123|xyz)$')).
41       * @throws Exception if the test fails
42       */
43      @Test
44      @Alerts("test123W+xyz,xyz")
45      public void test2() throws Exception {
46          test("'test123W+xyz'.match(new RegExp('^[a-z]*[0-9]+[A-Z]?.(123|xyz)$'))");
47      }
48  
49      /**
50       * Tests 'number one 12365 number two 9898'.match(/(\d+)\D+(\d+)/).
51       * @throws Exception if the test fails
52       */
53      @Test
54      @Alerts("12365 number two 9898,12365,9898")
55      public void test3() throws Exception {
56          test("'number one 12365 number two 9898'.match(/(\\d+)\\D+(\\d+)/)");
57      }
58  
59      /**
60       * Tests 'See Spot run.'.match(simpleSentence).
61       * @throws Exception if the test fails
62       */
63      @Test
64      @Alerts("See Spot run.,See Spot run.")
65      public void test4() throws Exception {
66          final String initialScript = "simpleSentence = /(\\s?[^\\!\\?\\.]+[\\!\\?\\.])+/;";
67          test(initialScript, "'See Spot run.'.match(simpleSentence)");
68      }
69  
70      /**
71       * Tests 'I like it. What\'s up? I said NO!'.match(simpleSentence).
72       * @throws Exception if the test fails
73       */
74      @Test
75      @Alerts("I like it. What's up? I said NO!, I said NO!")
76      public void test5() throws Exception {
77          final String initialScript = "simpleSentence = /(\\s?[^\\!\\?\\.]+[\\!\\?\\.])+/;";
78          test(initialScript, "'I like it. What\\'s up? I said NO!'.match(simpleSentence)");
79      }
80  
81      /**
82       * Tests 'the quick brown fox jumped over the lazy dogs'.match(/((\w+)\s*)+/).
83       * @throws Exception if the test fails
84       */
85      @Test
86      @Alerts("the quick brown fox jumped over the lazy dogs,dogs,dogs")
87      public void test6() throws Exception {
88          test("'the quick brown fox jumped over the lazy dogs'.match(/((\\w+)\\s*)+/)");
89      }
90  
91      private void test(final String script) throws Exception {
92          test(null, script);
93      }
94  
95      private void test(final String initialScript, final String script) throws Exception {
96          String html = "<html><head><script>\n"
97                  + LOG_TITLE_FUNCTION;
98          if (initialScript != null) {
99              html += initialScript + ";\n";
100         }
101         html += "  log(" + script + ");\n"
102             + "</script></head><body>\n"
103             + "</body></html>";
104         loadPageVerifyTitle2(html);
105     }
106 }