]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/object-get-own-property-descriptor-perform-to-object.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / stress / object-get-own-property-descriptor-perform-to-object.js
diff --git a/tests/stress/object-get-own-property-descriptor-perform-to-object.js b/tests/stress/object-get-own-property-descriptor-perform-to-object.js
new file mode 100644 (file)
index 0000000..50d772b
--- /dev/null
@@ -0,0 +1,43 @@
+var primitives = [
+    ["string", 6],
+    [42, undefined],
+    [Symbol("symbol"), undefined],
+    [true, undefined],
+    [false, undefined]
+];
+
+for (var [primitive, expected] of primitives) {
+    var ret = Object.getOwnPropertyDescriptor(primitive, 'length');
+    if (expected === undefined) {
+        if (ret !== expected)
+            throw new Error("bad value for " + String(primitive) + ": " + String(ret));
+    } else if (ret.value !== expected)
+        throw new Error("bad value for " + String(primitive) + ": " + String(ret));
+}
+
+function canary() {
+    return {
+        called: false,
+        toString() {
+            this.called = true;
+            throw new Error("out");
+        }
+    };
+}
+
+[
+    [ null, "TypeError: null is not an object (evaluating 'Object.getOwnPropertyDescriptor(value, property)')" ],
+    [ undefined, "TypeError: undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(value, property)')" ]
+].forEach(function ([value, message]) {
+    var property = canary();
+    var error = null;
+    try {
+        Object.getOwnPropertyDescriptor(value, property);
+    } catch (e) {
+        error = e;
+    }
+    if (!error)
+        throw new Error("error not thrown");
+    if (String(error) !== message)
+        throw new Error("bad error: " + String(error));
+});