WebKit Bugzilla
Attachment 348879 Details for
Bug 189291
: YARR: Add new RegExp back reference tests to specifically test back reference JIT code
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
189291.patch (text/plain), 4.77 KB, created by
Michael Saboff
on 2018-09-04 17:58:06 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michael Saboff
Created:
2018-09-04 17:58:06 PDT
Size:
4.77 KB
patch
obsolete
>Index: LayoutTests/ChangeLog >=================================================================== >--- LayoutTests/ChangeLog (revision 235650) >+++ LayoutTests/ChangeLog (working copy) >@@ -1,3 +1,16 @@ >+2018-09-04 Michael Saboff <msaboff@apple.com> >+ >+ YARR: Add new RegExp back reference tests to specifically test back reference JIT code >+ https://bugs.webkit.org/show_bug.cgi?id=189291 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ New tests. >+ >+ * fast/regex/backreferences-expected.txt: Added. >+ * fast/regex/backreferences.html: Added. >+ * fast/regex/script-tests/backreferences.js: Added. >+ > 2018-09-04 Ryosuke Niwa <rniwa@webkit.org> > > slotchange event doesn't get fired when inserting, removing, or renaming slot elements >Index: LayoutTests/fast/regex/backreferences-expected.txt >=================================================================== >--- LayoutTests/fast/regex/backreferences-expected.txt (nonexistent) >+++ LayoutTests/fast/regex/backreferences-expected.txt (working copy) >@@ -0,0 +1,27 @@ >+This tests backreferences >+ >+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". >+ >+ >+PASS /^(.)\1{3}/.exec('=====') is ["====", "="] >+PASS /^(.)\1*/.exec('=====') is ["=====", "="] >+PASS /^(.)\1*?/.exec('=====') is ["=", "="] >+PASS /^(.)\1*?$/.exec('=====') is ["=====", "="] >+PASS /(.*)\1/.exec('======') is ["======", "==="] >+PASS /(.*)\1{2}/.exec('======') is ["======", "=="] >+PASS /(.*)\1{4}/.exec('======') is ["=====", "="] >+PASS /(.*)\1{5}/.exec('======') is ["======", "="] >+PASS /(=).\1{3}/.exec('=a==b===') is ["=b===", "="] >+PASS /(===).\1*X/.exec('===a==X===b======X') is ["===b======X", "==="] >+PASS /\w*?(\w*) (c\1) is a f\1 \2/.exec('That cat is a fat cat') is ["That cat is a fat cat", "at", "cat"] >+PASS /(\w)(\w)(\w)e\3\2\1/i.exec('Racecar') is ["Racecar", "R", "a", "c"] >+PASS /^(?<equals>=*)\k<equals>+?$/.exec('======') is ["======", "==="] >+PASS /^(\u{10123}*)x\1?$/u.exec('\u{10123}x\u{10123}') is ["\u{10123}x\u{10123}", "\u{10123}"] >+PASS /(.{4})\1/i.exec('ABcdAbCd') is ["ABcdAbCd", "ABcd"] >+PASS /(.{4})\1/i.exec('ABc\u{fd}AbC\u{dd}') is ["ABc\u{fd}AbC\u{dd}", "ABc\u{fd}"] >+PASS /(.{4})\1/i.exec('ABc\u{b5}AbC\u{b5}') is ["ABc\u{b5}AbC\u{b5}", "ABc\u{b5}"] >+PASS /(.{4})\1/i.exec('ABc\u{ff}AbC\u{ff}') is ["ABc\u{ff}AbC\u{ff}", "ABc\u{ff}"] >+PASS successfullyParsed is true >+ >+TEST COMPLETE >+ >Index: LayoutTests/fast/regex/backreferences.html >=================================================================== >--- LayoutTests/fast/regex/backreferences.html (nonexistent) >+++ LayoutTests/fast/regex/backreferences.html (working copy) >@@ -0,0 +1,10 @@ >+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> >+<html> >+<head> >+<script src="../../resources/js-test-pre.js"></script> >+</head> >+<body> >+<script src="script-tests/backreferences.js"></script> >+<script src="../../resources/js-test-post.js"></script> >+</body> >+</html> >Index: LayoutTests/fast/regex/script-tests/backreferences.js >=================================================================== >--- LayoutTests/fast/regex/script-tests/backreferences.js (nonexistent) >+++ LayoutTests/fast/regex/script-tests/backreferences.js (working copy) >@@ -0,0 +1,32 @@ >+description("This tests backreferences"); >+ >+// Basic counted, greedy and non-greedy back references >+shouldBe("/^(.)\\1{3}/.exec('=====')", '["====", "="]'); >+ >+shouldBe("/^(.)\\1*/.exec('=====')", '["=====", "="]'); >+shouldBe("/^(.)\\1*?/.exec('=====')", '["=", "="]'); >+shouldBe("/^(.)\\1*?$/.exec('=====')", '["=====", "="]'); >+ >+// Back reference back tracking >+shouldBe("/(.*)\\1/.exec('======')", '["======", "==="]'); >+shouldBe("/(.*)\\1{2}/.exec('======')", '["======", "=="]'); >+shouldBe("/(.*)\\1{4}/.exec('======')", '["=====", "="]'); >+shouldBe("/(.*)\\1{5}/.exec('======')", '["======", "="]'); >+shouldBe("/(=).\\1{3}/.exec('=a==b===')", '["=b===", "="]'); >+shouldBe("/(===).\\1*X/.exec('===a==X===b======X')", '["===b======X", "==="]'); >+ >+// Multiple back references >+shouldBe("/\\w*?(\\w*) (c\\1) is a f\\1 \\2/.exec('That cat is a fat cat')", '["That cat is a fat cat", "at", "cat"]'); >+shouldBe("/(\\w)(\\w)(\\w)e\\3\\2\\1/i.exec('Racecar')", '["Racecar", "R", "a", "c"]'); >+ >+// Named capture group back references >+shouldBe("/^(?<equals>=*)\\k<equals>+?$/.exec('======')", '["======", "==="]'); >+ >+// Unicode back references >+shouldBe("/^(\\u{10123}*)x\\1?$/u.exec('\\u{10123}x\\u{10123}')", '["\\u{10123}x\\u{10123}", "\\u{10123}"]'); >+ >+// Ignore case back references >+shouldBe("/(.{4})\\1/i.exec('ABcdAbCd')", '["ABcdAbCd", "ABcd"]'); >+shouldBe("/(.{4})\\1/i.exec('ABc\\u{fd}AbC\\u{dd}')", '["ABc\\u{fd}AbC\\u{dd}", "ABc\\u{fd}"]'); >+shouldBe("/(.{4})\\1/i.exec('ABc\\u{b5}AbC\\u{b5}')", '["ABc\\u{b5}AbC\\u{b5}", "ABc\\u{b5}"]'); >+shouldBe("/(.{4})\\1/i.exec('ABc\\u{ff}AbC\\u{ff}')", '["ABc\\u{ff}AbC\\u{ff}", "ABc\\u{ff}"]');
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 189291
: 348879