mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-01 08:48:49 +00:00
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
test("length is 3", () => {
|
|
expect(Reflect.apply).toHaveLength(3);
|
|
});
|
|
|
|
describe("errors", () => {
|
|
test("target must be a function", () => {
|
|
[null, undefined, "foo", 123, NaN, Infinity, {}].forEach(value => {
|
|
expect(() => {
|
|
Reflect.apply(value);
|
|
}).toThrowWithMessage(
|
|
TypeError,
|
|
"First argument of Reflect.apply() must be a function"
|
|
);
|
|
});
|
|
});
|
|
|
|
test("arguments list must be an object", () => {
|
|
[null, undefined, "foo", 123, NaN, Infinity].forEach(value => {
|
|
expect(() => {
|
|
Reflect.apply(() => {}, undefined, value);
|
|
}).toThrowWithMessage(TypeError, "Arguments list must be an object");
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("normal behavior", () => {
|
|
test("calling built-in functions", () => {
|
|
expect(Reflect.apply(String.prototype.charAt, "foo", [0])).toBe("f");
|
|
expect(Reflect.apply(Array.prototype.indexOf, ["hello", 123, "foo", "bar"], ["foo"])).toBe(
|
|
2
|
|
);
|
|
});
|
|
|
|
test("|this| argument is forwarded to called function", () => {
|
|
function Foo(foo) {
|
|
this.foo = foo;
|
|
}
|
|
|
|
var o = {};
|
|
expect(o.foo).toBeUndefined();
|
|
Reflect.apply(Foo, o, ["bar"]);
|
|
expect(o.foo).toBe("bar");
|
|
});
|
|
});
|