summaryrefslogtreecommitdiff
path: root/test/built-ins/Reflect
diff options
context:
space:
mode:
authorLeonardo Balter <leonardo.balter@gmail.com>2015-07-29 21:26:20 -0400
committerLeonardo Balter <leonardo.balter@gmail.com>2015-09-04 14:50:14 -0400
commite7f5f3cf582cd2b255012f15a7e441bf0f539f72 (patch)
tree3968a1b2c8f12e8889aa073742d0d7ec00b00984 /test/built-ins/Reflect
parentbc51cfa0e01a1e1b5ab8fe94ccdb9d3c9fee848a (diff)
downloadqtdeclarative-testsuites-e7f5f3cf582cd2b255012f15a7e441bf0f539f72.tar.gz
Add tests for Reflect.preventExtensions
Diffstat (limited to 'test/built-ins/Reflect')
-rw-r--r--test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js27
-rw-r--r--test/built-ins/Reflect/preventExtensions/length.js17
-rw-r--r--test/built-ins/Reflect/preventExtensions/name.js22
-rw-r--r--test/built-ins/Reflect/preventExtensions/prevent-extensions.js34
-rw-r--r--test/built-ins/Reflect/preventExtensions/preventExtensions.js17
-rw-r--r--test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js24
-rw-r--r--test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js46
-rw-r--r--test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js28
-rw-r--r--test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js17
9 files changed, 232 insertions, 0 deletions
diff --git a/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js b/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js
new file mode 100644
index 000000000..d6e791f4c
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/always-return-true-from-ordinary-object.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Always returns true when target is an ordinary object.
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ ...
+ 2. Return target.[[PreventExtensions]]().
+
+ 9.1.4 [[PreventExtensions]] ( )
+
+ 1. Set the value of the [[Extensible]] internal slot of O to false.
+ 2. Return true.
+---*/
+
+var o = {};
+assert.sameValue(
+ Reflect.preventExtensions(o), true,
+ 'returns true after preventing extentions on an object'
+);
+assert.sameValue(
+ Reflect.preventExtensions(o), true,
+ 'returns true even if the object already prevents extentions'
+);
diff --git a/test/built-ins/Reflect/preventExtensions/length.js b/test/built-ins/Reflect/preventExtensions/length.js
new file mode 100644
index 000000000..a2ca5f6f8
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/length.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Reflect.preventExtensions.length value and property descriptor
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+ Reflect.preventExtensions.length, 1,
+ 'The value of `Reflect.preventExtensions.length` is `1`'
+);
+
+verifyNotEnumerable(Reflect.preventExtensions, 'length');
+verifyNotWritable(Reflect.preventExtensions, 'length');
+verifyConfigurable(Reflect.preventExtensions, 'length');
diff --git a/test/built-ins/Reflect/preventExtensions/name.js b/test/built-ins/Reflect/preventExtensions/name.js
new file mode 100644
index 000000000..219939ec4
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/name.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Reflect.preventExtensions.name value and property descriptor
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ 17 ECMAScript Standard Built-in Objects
+
+includes: [propertyHelper.js]
+---*/
+
+assert.sameValue(
+ Reflect.preventExtensions.name, 'preventExtensions',
+ 'The value of `Reflect.preventExtensions.name` is `"preventExtensions"`'
+);
+
+verifyNotEnumerable(Reflect.preventExtensions, 'name');
+verifyNotWritable(Reflect.preventExtensions, 'name');
+verifyConfigurable(Reflect.preventExtensions, 'name');
diff --git a/test/built-ins/Reflect/preventExtensions/prevent-extensions.js b/test/built-ins/Reflect/preventExtensions/prevent-extensions.js
new file mode 100644
index 000000000..50beb214a
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/prevent-extensions.js
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Prevent extentions on target.
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ ...
+ 2. Return target.[[PreventExtensions]]().
+
+ 9.1.4 [[PreventExtensions]] ( )
+
+ 1. Set the value of the [[Extensible]] internal slot of O to false.
+ ...
+---*/
+
+var o = {};
+Reflect.preventExtensions(o);
+assert.sameValue(Object.isExtensible(o), false, 'object is not extensible');
+
+assert.throws(TypeError, function() {
+ Object.defineProperty(o, 'y', {});
+});
+assert.throws(TypeError, function() {
+ Object.setPrototypeOf(o, Array.prototype);
+});
+
+Reflect.preventExtensions(o);
+assert.sameValue(
+ Object.isExtensible(o), false,
+ 'object is still not extensible on exhausted calls'
+);
diff --git a/test/built-ins/Reflect/preventExtensions/preventExtensions.js b/test/built-ins/Reflect/preventExtensions/preventExtensions.js
new file mode 100644
index 000000000..68c7f39c2
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/preventExtensions.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Reflect.preventExtensions is configurable, writable and not enumerable.
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ 17 ECMAScript Standard Built-in Objects
+
+includes: [propertyHelper.js]
+---*/
+
+verifyNotEnumerable(Reflect, 'preventExtensions');
+verifyWritable(Reflect, 'preventExtensions');
+verifyConfigurable(Reflect, 'preventExtensions');
diff --git a/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js b/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js
new file mode 100644
index 000000000..133331804
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/return-abrupt-from-result.js
@@ -0,0 +1,24 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Return abrupt result.
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ ...
+ 2. Return target.[[PreventExtensions]]().
+features: [Proxy]
+---*/
+
+var o1 = {};
+var p = new Proxy(o1, {
+ preventExtensions: function() {
+ throw new Test262Error();
+ }
+});
+
+assert.throws(Test262Error, function() {
+ Reflect.preventExtensions(p);
+});
diff --git a/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js b/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js
new file mode 100644
index 000000000..78322aa59
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/return-boolean-from-proxy-object.js
@@ -0,0 +1,46 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.12
+description: >
+ Returns boolean from Proxy object.
+info: >
+ 26.1.12 Reflect.preventExtensions ( target )
+
+ ...
+ 2. Return target.[[PreventExtensions]]().
+
+ 9.5.4 [[PreventExtensions]] ( )
+
+ 8. Let booleanTrapResult be ToBoolean(Call(trap, handler, «target»)).
+ 9. ReturnIfAbrupt(booleanTrapResult).
+ 10. If booleanTrapResult is true, then
+ a. Let targetIsExtensible be target.[[IsExtensible]]().
+ b. ReturnIfAbrupt(targetIsExtensible).
+ c. If targetIsExtensible is true, throw a TypeError exception.
+ 11. Return booleanTrapResult.
+features: [Proxy]
+---*/
+
+var p1 = new Proxy({}, {
+ preventExtensions: function() {
+ return false;
+ }
+});
+
+assert.sameValue(
+ Reflect.preventExtensions(p1), false,
+ 'returns false from Proxy handler'
+);
+
+var p2 = new Proxy({}, {
+ preventExtensions: function(target) {
+ Object.preventExtensions(target);
+ return true;
+ }
+});
+
+assert.sameValue(
+ Reflect.preventExtensions(p2), true,
+ 'returns true from Proxy handler'
+);
diff --git a/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js b/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js
new file mode 100644
index 000000000..1444a401e
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/target-is-not-object-throws.js
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.10
+description: >
+ Throws a TypeError if target is not an Object.
+info: >
+ 26.1.10 Reflect.isExtensible (target)
+
+ 1. If Type(target) is not Object, throw a TypeError exception.
+ ...
+---*/
+
+assert.throws(TypeError, function() {
+ Reflect.isExtensible(1);
+});
+
+assert.throws(TypeError, function() {
+ Reflect.isExtensible(null);
+});
+
+assert.throws(TypeError, function() {
+ Reflect.isExtensible(undefined);
+});
+
+assert.throws(TypeError, function() {
+ Reflect.isExtensible('');
+});
diff --git a/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js b/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js
new file mode 100644
index 000000000..aaea9eba5
--- /dev/null
+++ b/test/built-ins/Reflect/preventExtensions/target-is-symbol-throws.js
@@ -0,0 +1,17 @@
+// Copyright (C) 2015 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 26.1.10
+description: >
+ Throws a TypeError if target is a Symbol
+info: >
+ 26.1.10 Reflect.isExtensible (target)
+
+ 1. If Type(target) is not Object, throw a TypeError exception.
+ ...
+features: [Symbol]
+---*/
+
+assert.throws(TypeError, function() {
+ Reflect.isExtensible(Symbol(1));
+});