diff options
Diffstat (limited to 'Userland/Libraries/LibJS/Tests/builtins/Object/Object.hasOwn.js')
-rw-r--r-- | Userland/Libraries/LibJS/Tests/builtins/Object/Object.hasOwn.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Tests/builtins/Object/Object.hasOwn.js b/Userland/Libraries/LibJS/Tests/builtins/Object/Object.hasOwn.js new file mode 100644 index 0000000000..1ea82a309a --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/Object/Object.hasOwn.js @@ -0,0 +1,35 @@ +describe("basic functionality", () => { + test("length", () => { + expect(Object.hasOwn).toHaveLength(2); + }); + + test("returns true for existent own property", () => { + const o = { foo: "bar" }; + expect(Object.hasOwn(o, "foo")).toBeTrue(); + }); + + test("returns false for non-existent own property", () => { + const o = {}; + expect(Object.hasOwn(o, "foo")).toBeFalse(); + }); + + test("returns false for existent prototype chain property", () => { + const o = {}; + Object.prototype.foo = "bar"; + expect(Object.hasOwn(o, "foo")).toBeFalse(); + }); +}); + +describe("errors", () => { + test("null argument", () => { + expect(() => { + Object.hasOwn(null); + }).toThrowWithMessage(TypeError, "ToObject on null or undefined"); + }); + + test("undefined argument", () => { + expect(() => { + Object.hasOwn(undefined); + }).toThrowWithMessage(TypeError, "ToObject on null or undefined"); + }); +}); |