diff options
Diffstat (limited to 'deps/v8/test/mjsunit/harmony/proxies-is-extensible.js')
-rw-r--r-- | deps/v8/test/mjsunit/harmony/proxies-is-extensible.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/harmony/proxies-is-extensible.js b/deps/v8/test/mjsunit/harmony/proxies-is-extensible.js new file mode 100644 index 0000000000..f597d0d0a6 --- /dev/null +++ b/deps/v8/test/mjsunit/harmony/proxies-is-extensible.js @@ -0,0 +1,74 @@ +// Copyright 2015 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-proxies --harmony-reflect + + +(function () { + // No trap. + + var target = {}; + var handler = {}; + var proxy = new Proxy(target, handler); + + assertTrue(Reflect.isExtensible(target)); + assertTrue(Reflect.isExtensible(proxy)); + assertTrue(Reflect.preventExtensions(proxy)); + assertFalse(Reflect.isExtensible(target)); + assertFalse(Reflect.isExtensible(proxy)); +})(); + + +(function () { + // "Undefined" trap. + + var target = {}; + var handler = { isExtensible: null }; + var proxy = new Proxy(target, handler); + + assertTrue(Reflect.isExtensible(target)); + assertTrue(Reflect.isExtensible(proxy)); + assertTrue(Reflect.preventExtensions(proxy)); + assertFalse(Reflect.isExtensible(target)); + assertFalse(Reflect.isExtensible(proxy)); +})(); + + +(function () { + // Invalid trap. + + var target = {}; + var handler = { isExtensible: true }; + var proxy = new Proxy(target, handler); + + assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); +})(); + + +(function () { + var target = {}; + var handler = { isExtensible() {return "bla"} }; + var proxy = new Proxy(target, handler); + + // Trap returns trueish and target is extensible. + assertTrue(Reflect.isExtensible(proxy)); + + // Trap returns trueish but target is not extensible. + Reflect.preventExtensions(target); + assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); +})(); + + +(function () { + var target = {}; + var handler = { isExtensible() {return 0} }; + var proxy = new Proxy(target, handler); + + // Trap returns falsish but target is extensible. + assertThrows(() => {Reflect.isExtensible(proxy)}, TypeError); + + // Trap returns falsish and target is not extensible. + Reflect.preventExtensions(target); + assertFalse(Reflect.isExtensible(proxy)); +})(); |