diff options
Diffstat (limited to 'Userland/Libraries/LibJS/Tests/builtins/Object/Object.entries.js')
-rw-r--r-- | Userland/Libraries/LibJS/Tests/builtins/Object/Object.entries.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Tests/builtins/Object/Object.entries.js b/Userland/Libraries/LibJS/Tests/builtins/Object/Object.entries.js new file mode 100644 index 0000000000..c8ed8ffc4c --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/Object/Object.entries.js @@ -0,0 +1,64 @@ +describe("basic functionality", () => { + test("length", () => { + expect(Object.entries).toHaveLength(1); + expect(Object.entries(true)).toHaveLength(0); + expect(Object.entries(45)).toHaveLength(0); + expect(Object.entries(-998)).toHaveLength(0); + expect(Object.entries("abcd")).toHaveLength(4); + expect(Object.entries([1, 2, 3])).toHaveLength(3); + expect(Object.entries({ a: 1, b: 2, c: 3 })).toHaveLength(3); + }); + + test("entries with object", () => { + let entries = Object.entries({ foo: 1, bar: 2, baz: 3 }); + + expect(entries).toEqual([ + ["foo", 1], + ["bar", 2], + ["baz", 3], + ]); + }); + + test("entries with objects with symbol keys", () => { + let entries = Object.entries({ foo: 1, [Symbol("bar")]: 2, baz: 3 }); + + expect(entries).toEqual([ + ["foo", 1], + ["baz", 3], + ]); + }); + + test("entries with array", () => { + entries = Object.entries(["a", "b", "c"]); + expect(entries).toEqual([ + ["0", "a"], + ["1", "b"], + ["2", "c"], + ]); + }); + + test("ignores non-enumerable properties", () => { + let obj = { foo: 1 }; + Object.defineProperty(obj, "getFoo", { + value: function () { + return this.foo; + }, + }); + let entries = Object.entries(obj); + expect(entries).toEqual([["foo", 1]]); + }); +}); + +describe("errors", () => { + test("null argument", () => { + expect(() => { + Object.entries(null); + }).toThrowWithMessage(TypeError, "ToObject on null or undefined"); + }); + + test("undefined argument", () => { + expect(() => { + Object.entries(undefined); + }).toThrowWithMessage(TypeError, "ToObject on null or undefined"); + }); +}); |