| // Superficial tests for iterators created by Array.prototype.iterator |
| |
| load(libdir + "iteration.js"); |
| |
| var proto = Object.getPrototypeOf([][Symbol.iterator]()); |
| var iterProto = Object.getPrototypeOf(proto); |
| proto = Object.getPrototypeOf([].keys()); |
| assertEq(Object.getPrototypeOf(proto), iterProto); |
| proto = Object.getPrototypeOf([].entries()); |
| assertEq(Object.getPrototypeOf(proto), iterProto); |
| |
| function check(it) { |
| assertEq(typeof it, 'object'); |
| assertEq(Object.getPrototypeOf(it), proto); |
| assertEq(Object.getOwnPropertyNames(it).length, 0); |
| assertEq(it[Symbol.iterator](), it); |
| |
| // for-in enumerates the iterator's properties. |
| it.x = 0; |
| var s = ''; |
| for (var p in it) |
| s += p + '.'; |
| assertEq(s, 'x.'); |
| } |
| |
| check([][Symbol.iterator]()); |
| check(Array.prototype[Symbol.iterator].call({})); |
| check([].keys()); |
| check(Array.prototype.keys.call({})); |
| check([].entries()); |
| check(Array.prototype.entries.call({})); |