1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:57:44 +00:00

LibJS: Implement most of the Reflect object

This commit is contained in:
Linus Groh 2020-05-01 11:06:27 +01:00 committed by Andreas Kling
parent 1ba2e6768d
commit 79b829637e
22 changed files with 877 additions and 54 deletions

View file

@ -0,0 +1,39 @@
load("test-common.js");
try {
assert(Reflect.ownKeys.length === 1);
[null, undefined, "foo", 123, NaN, Infinity].forEach(value => {
assertThrowsError(() => {
Reflect.ownKeys(value);
}, {
error: TypeError,
message: "First argument of Reflect.ownKeys() must be an object"
});
});
var objectOwnKeys = Reflect.ownKeys({});
assert(objectOwnKeys.length === 0);
objectOwnKeys = Reflect.ownKeys({ foo: "bar", bar: "baz", 0: 42 });
assert(objectOwnKeys.length === 3);
assert(objectOwnKeys[0] === "0");
assert(objectOwnKeys[1] === "foo");
assert(objectOwnKeys[2] === "bar");
var arrayOwnKeys = Reflect.ownKeys([]);
assert(arrayOwnKeys.length === 1);
assert(arrayOwnKeys[0] === "length");
arrayOwnKeys = Reflect.ownKeys(["foo", [], 123, undefined]);
assert(arrayOwnKeys.length === 5);
assert(arrayOwnKeys[0] === "0");
assert(arrayOwnKeys[1] === "1");
assert(arrayOwnKeys[2] === "2");
assert(arrayOwnKeys[3] === "3");
assert(arrayOwnKeys[4] === "length");
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);
}