test("basic functionality", () => { let o = { key1: "key1", key2: "key2", key3: "key3", }; Object.defineProperty(o, "defined", { enumerable: true, get() { o.prop = "prop"; return "defined"; }, }); o.key4 = "key4"; o[2] = 2; o[0] = 0; o[1] = 1; delete o.key1; delete o.key3; o.key1 = "key1"; expect(JSON.stringify(o)).toBe( '{"0":0,"1":1,"2":2,"key2":"key2","defined":"defined","key4":"key4","key1":"key1"}' ); });