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