diff options
Diffstat (limited to 'Libraries/LibJS/Tests/Object.defineProperty.js')
-rw-r--r-- | Libraries/LibJS/Tests/Object.defineProperty.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Libraries/LibJS/Tests/Object.defineProperty.js b/Libraries/LibJS/Tests/Object.defineProperty.js new file mode 100644 index 0000000000..4f3b7049a6 --- /dev/null +++ b/Libraries/LibJS/Tests/Object.defineProperty.js @@ -0,0 +1,39 @@ +function assert(x) { if (!x) throw 1; } + +try { + + var o = {}; + Object.defineProperty(o, "foo", { value: 1, writable: false, enumerable: false }); + + assert(o.foo === 1); + o.foo = 2; + assert(o.foo === 1); + + var d = Object.getOwnPropertyDescriptor(o, "foo"); + assert(d.configurable === false); + assert(d.enumerable === false); + assert(d.writable === false); + assert(d.value === 1); + + Object.defineProperty(o, "bar", { value: "hi", writable: true, enumerable: true }); + + assert(o.bar === "hi"); + o.bar = "ho"; + assert(o.bar === "ho"); + + d = Object.getOwnPropertyDescriptor(o, "bar"); + assert(d.configurable === false); + assert(d.enumerable === true); + assert(d.writable === true); + assert(d.value === "ho"); + + try { + Object.defineProperty(o, "bar", { value: "xx", enumerable: false }); + } catch (e) { + assert(e.name === "TypeError"); + } + + console.log("PASS"); +} catch (e) { + console.log(e) +} |