diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Proxy/enumerate/removed-does-not-trigger.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Proxy/enumerate/removed-does-not-trigger.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Proxy/enumerate/removed-does-not-trigger.js b/js/src/tests/test262/built-ins/Proxy/enumerate/removed-does-not-trigger.js new file mode 100644 index 0000000000..c738d3adaa --- /dev/null +++ b/js/src/tests/test262/built-ins/Proxy/enumerate/removed-does-not-trigger.js @@ -0,0 +1,49 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-proxy-object-internal-methods-and-internal-slots +description: > + Enumerate trap was removed and it should not be triggered anymore. +includes: [compareArray.js] +features: [Proxy, Symbol, Symbol.iterator] +---*/ + +var x; +var target = [1, 2, 3]; +var p = new Proxy(target, { + enumerate: function() { + throw new Test262Error( + "An enumerate property on handler object shouldn't trigger a Proxy trap" + ); + } +}); + +var forInResults = []; +for (x in p) { + forInResults.push(x); +} + +assert.compareArray(forInResults, ["0", "1", "2"]); + +var forOfResults = []; +for (x of p) { + forOfResults.push(x); +} + +assert.compareArray(forOfResults, [1, 2, 3]); + +var itor = p[Symbol.iterator](); +var next = itor.next(); +assert.sameValue(next.value, 1); +assert.sameValue(next.done, false); +next = itor.next(); +assert.sameValue(next.value, 2); +assert.sameValue(next.done, false); +next = itor.next(); +assert.sameValue(next.value, 3); +assert.sameValue(next.done, false); +next = itor.next(); +assert.sameValue(next.value, undefined); +assert.sameValue(next.done, true); + +reportCompare(0, 0); |