diff options
author | Leonardo Balter <leonardo.balter@gmail.com> | 2015-07-29 21:26:20 -0400 |
---|---|---|
committer | Leonardo Balter <leonardo.balter@gmail.com> | 2015-09-04 14:50:14 -0400 |
commit | e7f5f3cf582cd2b255012f15a7e441bf0f539f72 (patch) | |
tree | 3968a1b2c8f12e8889aa073742d0d7ec00b00984 /test/built-ins/Reflect | |
parent | bc51cfa0e01a1e1b5ab8fe94ccdb9d3c9fee848a (diff) | |
download | qtdeclarative-testsuites-e7f5f3cf582cd2b255012f15a7e441bf0f539f72.tar.gz |
Add tests for Reflect.preventExtensions
Diffstat (limited to 'test/built-ins/Reflect')
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)); +}); |