| function test(actual, expected) { |
| if (actual !== expected) |
| throw new Error('bad value: ' + actual); |
| } |
| |
| test(Array.prototype[Symbol.iterator], Array.prototype.values); |
| test(Map.prototype[Symbol.iterator], Map.prototype.entries); |
| test(Set.prototype[Symbol.iterator], Set.prototype.values); |
| |
| function argumentsTests(values) { |
| test(function () { |
| return arguments[Symbol.iterator]; |
| }(), values); |
| |
| test(function (a, b, c) { |
| return arguments[Symbol.iterator]; |
| }(), values); |
| |
| test(function () { |
| 'use strict'; |
| return arguments[Symbol.iterator]; |
| }(), values); |
| |
| test(function (a, b, c) { |
| 'use strict'; |
| return arguments[Symbol.iterator]; |
| }(), values); |
| } |
| |
| argumentsTests(Array.prototype.values); |
| var arrayValues = Array.prototype.values; |
| Array.prototype.values = null; |
| argumentsTests(arrayValues); |