diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js new file mode 100644 index 0000000000..20074b01e9 --- /dev/null +++ b/js/src/tests/test262/built-ins/Object/getOwnPropertyDescriptors/observable-operations.js @@ -0,0 +1,40 @@ +// Copyright (C) 2016 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Object.getOwnPropertyDescriptors should perform observable operations in the correct order +esid: sec-object.getownpropertydescriptors +author: Jordan Harband +features: [Proxy] +includes: [proxyTrapsHelper.js] +---*/ + +var log = ""; +var object = { + a: 0, + b: 0, + c: 0 +}; +var handler = allowProxyTraps({ + getOwnPropertyDescriptor: function(target, propertyKey) { + assert.sameValue(target, object, "getOwnPropertyDescriptor"); + log += "|getOwnPropertyDescriptor:" + propertyKey; + return Object.getOwnPropertyDescriptor(target, propertyKey); + }, + ownKeys: function(target) { + assert.sameValue(target, object, "ownKeys"); + log += "|ownKeys"; + return Object.getOwnPropertyNames(target); + } +}); +var check = allowProxyTraps({ + get: function(target, propertyKey, receiver) { + assert(propertyKey in target, "handler check: " + propertyKey); + return target[propertyKey]; + } +}); +var proxy = new Proxy(object, new Proxy(handler, check)); +var result = Object.getOwnPropertyDescriptors(proxy); +assert.sameValue(log, "|ownKeys|getOwnPropertyDescriptor:a|getOwnPropertyDescriptor:b|getOwnPropertyDescriptor:c", 'log'); + +reportCompare(0, 0); |