summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Tests/Object.defineProperty.js
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Tests/Object.defineProperty.js')
-rw-r--r--Libraries/LibJS/Tests/Object.defineProperty.js39
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)
+}