Source/JavaScriptCore: Build fix attempt after r89885.
[WebKit-https.git] / LayoutTests / fast / regex / script-tests / toString.js
1 description("This page tests toString conversion of RegExp objects, particularly wrt to '/' characters and RegExp.prototype.");
2
3 function testForwardSlash(pattern, _string)
4 {
5     string = _string;
6
7     re1 = new RegExp(pattern);
8     re2 = eval(re1.toString());
9
10     return re1.test(string) && re2.test(string);
11 }
12
13 shouldBe("RegExp('/').source", '"\\\\/"');
14 shouldBe("RegExp('').source", '""');
15 shouldBe("RegExp.prototype.source", '""');
16
17 shouldBe("RegExp('/').toString()", '"/\\\\//"');
18 shouldBe("RegExp('').toString()", '"/(?:)/"');
19 shouldBe("RegExp.prototype.toString()", '"/(?:)/"');
20
21 // These strings are equivalent, since the '\' is identity escaping the '/' at the string level.
22 shouldBeTrue('testForwardSlash("^/$", "/");');
23 shouldBeTrue('testForwardSlash("^\/$", "/");');
24 // This string passes "^\/$" to the RegExp, so the '/' is escaped in the re!
25 shouldBeTrue('testForwardSlash("^\\/$", "/");');
26 // These strings pass "^\\/$" and "^\\\/$" respectively to the RegExp, giving one '\' to match.
27 shouldBeTrue('testForwardSlash("^\\\\/$", "\\/");');
28 shouldBeTrue('testForwardSlash("^\\\\\\/$", "\\/");');
29 // These strings match two backslashes (the second with the '/' escaped).
30 shouldBeTrue('testForwardSlash("^\\\\\\\\/$", "\\\\/");');
31 shouldBeTrue('testForwardSlash("^\\\\\\\\\\/$", "\\\\/");');
32
33 var successfullyParsed = true;
34