b5da423f649eca07e024bcb74327bbe34d8d0cb6
[WebKit-https.git] / JSTests / stress / regexp-unicode-surrogate-pair-increment-should-involve-length-check.js
1 // This test checks for proper incrementing around / over individual surrogates and surrogate pairs.
2 // This test should run without crashing.
3
4 function testRegExpMatch(re, str)
5 {
6     for (let i = 0; i < 100; ++i) {
7         let match = re.exec(str);
8         if (!match || match[0] != str) {
9             print(match);
10             throw "Expected " + re + " to match \"" + str + "\" but it didn't";
11         }
12     }
13 }
14
15 let testString = "\ud800\ud800\udc00";
16 let greedyRegExp = /([^x]+)[^]*\1([^])/u;
17
18 testRegExpMatch(greedyRegExp, testString);
19
20 let nonGreedyRegExp = /(.*[^x]+?)[^]*([^])/u;
21
22 testRegExpMatch(nonGreedyRegExp, testString);
23
24 let testString2 = "\ud800\ud800\udc00Test\udc00123";
25 let backtrackGreedyRegExp = /.*[\x20-\udffff].\w*.\d{3}/u;
26
27 testRegExpMatch(backtrackGreedyRegExp, testString2);