mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-07 10:06:03 +00:00
Everywhere: Hoist the Libraries folder to the top-level
This commit is contained in:
parent
950e819ee7
commit
93712b24bf
Notes:
github-actions[bot]
2024-11-10 11:51:52 +00:00
Author: https://github.com/trflynn89
Commit: 93712b24bf
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2256
Reviewed-by: https://github.com/sideshowbarker
4547 changed files with 104 additions and 113 deletions
198
Libraries/LibJS/Tests/builtins/RegExp/RegExp.legacy.js
Normal file
198
Libraries/LibJS/Tests/builtins/RegExp/RegExp.legacy.js
Normal file
|
@ -0,0 +1,198 @@
|
|||
// NOTE: This file came from https://github.com/v8/v8/blob/main/test/mjsunit/regexp-static.js
|
||||
// and was modified to match LibJS test framework.
|
||||
|
||||
test("basic functionality", () => {
|
||||
var re = /((\d+)\.(\d+))/;
|
||||
var s = "abc123.456def";
|
||||
re.exec(s);
|
||||
|
||||
expect(RegExp.input).toBe(s);
|
||||
expect(RegExp["$_"]).toBe(s);
|
||||
expect(RegExp.lastMatch).toBe("123.456");
|
||||
expect(RegExp["$&"]).toBe("123.456");
|
||||
expect(RegExp.lastParen).toBe("456");
|
||||
expect(RegExp["$+"]).toBe("456");
|
||||
expect(RegExp.leftContext).toBe("abc");
|
||||
expect(RegExp["$`"]).toBe("abc");
|
||||
expect(RegExp.rightContext).toBe("def");
|
||||
expect(RegExp["$'"]).toBe("def");
|
||||
|
||||
expect(RegExp.$1).toBe("123.456");
|
||||
expect(RegExp.$2).toBe("123");
|
||||
expect(RegExp.$3).toBe("456");
|
||||
expect(RegExp.$4).toBe("");
|
||||
expect(RegExp.$5).toBe("");
|
||||
expect(RegExp.$6).toBe("");
|
||||
expect(RegExp.$7).toBe("");
|
||||
expect(RegExp.$8).toBe("");
|
||||
expect(RegExp.$9).toBe("");
|
||||
});
|
||||
|
||||
test("They should be read only", () => {
|
||||
RegExp["$1"] = "fisk";
|
||||
expect(RegExp.$1).toBe("123.456");
|
||||
|
||||
RegExp.input = Number();
|
||||
expect(typeof RegExp.input).toBe(typeof String());
|
||||
});
|
||||
|
||||
test("They should be read only (strict mode)", () => {
|
||||
"use strict";
|
||||
|
||||
try {
|
||||
RegExp["$1"] = "fisk";
|
||||
expect(true).toBeFalse(); // SHOULD NOT REACH HERE
|
||||
} catch (e) {
|
||||
expect(String(e)).toBe("TypeError: Cannot set property '$1' of [object RegExpConstructor]");
|
||||
expect(RegExp.$1).toBe("123.456");
|
||||
}
|
||||
|
||||
RegExp.input = Number();
|
||||
expect(typeof RegExp.input).toBe(typeof String());
|
||||
});
|
||||
|
||||
test("the original accessor vs the alias accessor", () => {
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "input").get).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$_").get
|
||||
);
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "input").set).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$_").set
|
||||
);
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "lastMatch").get).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$&").get
|
||||
);
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "lastParen").get).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$+").get
|
||||
);
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "leftContext").get).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$`").get
|
||||
);
|
||||
expect(Object.getOwnPropertyDescriptor(RegExp, "rightContext").get).not.toBe(
|
||||
Object.getOwnPropertyDescriptor(RegExp, "$'").get
|
||||
);
|
||||
});
|
||||
|
||||
test("match should all behave as if exec were called.", () => {
|
||||
var re = /((\d+)\.(\d+))/;
|
||||
var s = "ghi789.012jkl";
|
||||
s.match(re);
|
||||
|
||||
expect(RegExp.input).toBe(s);
|
||||
expect(RegExp["$_"]).toBe(s);
|
||||
expect(RegExp.lastMatch).toBe("789.012");
|
||||
expect(RegExp["$&"]).toBe("789.012");
|
||||
expect(RegExp.lastParen).toBe("012");
|
||||
expect(RegExp["$+"]).toBe("012");
|
||||
expect(RegExp.leftContext).toBe("ghi");
|
||||
expect(RegExp["$`"]).toBe("ghi");
|
||||
expect(RegExp.rightContext).toBe("jkl");
|
||||
expect(RegExp["$'"]).toBe("jkl");
|
||||
|
||||
expect(RegExp.$1).toBe("789.012");
|
||||
expect(RegExp.$2).toBe("789");
|
||||
expect(RegExp.$3).toBe("012");
|
||||
expect(RegExp.$4).toBe("");
|
||||
expect(RegExp.$5).toBe("");
|
||||
expect(RegExp.$6).toBe("");
|
||||
expect(RegExp.$7).toBe("");
|
||||
expect(RegExp.$8).toBe("");
|
||||
expect(RegExp.$9).toBe("");
|
||||
});
|
||||
|
||||
test("replace should all behave as if exec were called.", () => {
|
||||
var re = /((\d+)\.(\d+))/;
|
||||
var s = "abc123.456def";
|
||||
s.replace(re, "whocares");
|
||||
|
||||
expect(RegExp.input).toBe(s);
|
||||
expect(RegExp["$_"]).toBe(s);
|
||||
expect(RegExp.lastMatch).toBe("123.456");
|
||||
expect(RegExp["$&"]).toBe("123.456");
|
||||
expect(RegExp.lastParen).toBe("456");
|
||||
expect(RegExp["$+"]).toBe("456");
|
||||
expect(RegExp.leftContext).toBe("abc");
|
||||
expect(RegExp["$`"]).toBe("abc");
|
||||
expect(RegExp.rightContext).toBe("def");
|
||||
expect(RegExp["$'"]).toBe("def");
|
||||
|
||||
expect(RegExp.$1).toBe("123.456");
|
||||
expect(RegExp.$2).toBe("123");
|
||||
expect(RegExp.$3).toBe("456");
|
||||
expect(RegExp.$4).toBe("");
|
||||
expect(RegExp.$5).toBe("");
|
||||
expect(RegExp.$6).toBe("");
|
||||
expect(RegExp.$7).toBe("");
|
||||
expect(RegExp.$8).toBe("");
|
||||
expect(RegExp.$9).toBe("");
|
||||
});
|
||||
|
||||
test("test should all behave as if exec were called.", () => {
|
||||
var re = /((\d+)\.(\d+))/;
|
||||
var s = "ghi789.012jkl";
|
||||
re.test(s);
|
||||
|
||||
expect(RegExp.input).toBe(s);
|
||||
expect(RegExp["$_"]).toBe(s);
|
||||
expect(RegExp.lastMatch).toBe("789.012");
|
||||
expect(RegExp["$&"]).toBe("789.012");
|
||||
expect(RegExp.lastParen).toBe("012");
|
||||
expect(RegExp["$+"]).toBe("012");
|
||||
expect(RegExp.leftContext).toBe("ghi");
|
||||
expect(RegExp["$`"]).toBe("ghi");
|
||||
expect(RegExp.rightContext).toBe("jkl");
|
||||
expect(RegExp["$'"]).toBe("jkl");
|
||||
|
||||
expect(RegExp.$1).toBe("789.012");
|
||||
expect(RegExp.$2).toBe("789");
|
||||
expect(RegExp.$3).toBe("012");
|
||||
expect(RegExp.$4).toBe("");
|
||||
expect(RegExp.$5).toBe("");
|
||||
expect(RegExp.$6).toBe("");
|
||||
expect(RegExp.$7).toBe("");
|
||||
expect(RegExp.$8).toBe("");
|
||||
expect(RegExp.$9).toBe("");
|
||||
});
|
||||
|
||||
test("replace must interleave matching and replacing when a global regexp is matched and replaced with the result of a function", () => {
|
||||
var re = /(.)/g;
|
||||
function f() {
|
||||
return RegExp.$1;
|
||||
}
|
||||
expect("abcd".replace(re, f)).toBe("dddd");
|
||||
});
|
||||
|
||||
test("the last parenthesis didn't match.", () => {
|
||||
expect(/foo(?:a(x))?/.exec("foobx")).toEqual(["foo", undefined]);
|
||||
expect(RegExp.lastParen).toBe("");
|
||||
});
|
||||
|
||||
test("$1 to $9", () => {
|
||||
for (var i = 1; i <= 9; i++) {
|
||||
var haystack = "foo";
|
||||
var re_text = "^foo";
|
||||
for (var j = 0; j < i - 1; j++) {
|
||||
haystack += "x";
|
||||
re_text += "(x)";
|
||||
}
|
||||
re_text += "(?:a(x))?";
|
||||
haystack += "bx";
|
||||
var re = new RegExp(re_text);
|
||||
expect(re.test(haystack)).toBeTrue();
|
||||
for (var j = 1; j < i - 1; j++) {
|
||||
expect(RegExp["$" + j]).toBe("x");
|
||||
}
|
||||
expect(RegExp["$" + i]).toBe("");
|
||||
}
|
||||
});
|
||||
|
||||
test("save the correct string as the last subject", () => {
|
||||
var foo =
|
||||
"lsdfj sldkfj sdklfj læsdfjl sdkfjlsdk fjsdl fjsdljskdj flsj flsdkj flskd regexp: /foobar/\nldkfj sdlkfj sdkl";
|
||||
expect(/^([a-z]+): (.*)/.test(foo.substring(foo.indexOf("regexp:")))).toBeTrue();
|
||||
expect(RegExp.$1).toBe("regexp");
|
||||
});
|
||||
|
||||
test("calling with no argument is the same as calling with undefined.", () => {
|
||||
expect(/^undefined$/.test()).toBeTrue();
|
||||
expect(/^undefined$/.exec()).toEqual(["undefined"]);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue