mirror of
https://github.com/tc39/test262.git
synced 2025-05-03 14:30:27 +02:00
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
// This test checks the shape of builtin iterators.
|
|
|
|
function iteratorShape(iter) {
|
|
if (iter.hasOwnProperty('next'))
|
|
throw "Error: iterator should not have next method.";
|
|
if (!iter.__proto__.hasOwnProperty('next'))
|
|
throw "Error: iterator prototype should have next method.";
|
|
if (typeof iter.__proto__.next !== "function")
|
|
throw "Error: iterator prototype should have next method.";
|
|
}
|
|
|
|
function sameNextMethods(iterators) {
|
|
var iterator = iterators[0];
|
|
for (var i = 1; i < iterators.length; ++i) {
|
|
if (iterator.next !== iterators[i].next)
|
|
throw "Error: next method is not the same.";
|
|
}
|
|
}
|
|
|
|
var array = ['Cocoa', 'Cappuccino', 'The des Alizes', 'Matcha', 'Kilimanjaro'];
|
|
var iterator = array[Symbol.iterator]();
|
|
iteratorShape(iterator);
|
|
|
|
var keyIterator = array.keys();
|
|
iteratorShape(keyIterator);
|
|
|
|
var keyValueIterator = array.entries();
|
|
iteratorShape(keyValueIterator);
|
|
|
|
sameNextMethods([array[Symbol.iterator](), array.keys(), array.entries()]);
|
|
|
|
var set = new Set(['Cocoa', 'Cappuccino', 'The des Alizes', 'Matcha', 'Kilimanjaro']);
|
|
var iterator = set[Symbol.iterator]();
|
|
iteratorShape(iterator);
|
|
|
|
var keyIterator = set.keys();
|
|
iteratorShape(keyIterator);
|
|
|
|
var keyValueIterator = set.entries();
|
|
iteratorShape(keyValueIterator);
|
|
|
|
sameNextMethods([set[Symbol.iterator](), set.keys(), set.entries()]);
|
|
|
|
var map = new Map();
|
|
[
|
|
[ 'Cocoa', 2, ],
|
|
[ 'Cappuccino', 0 ],
|
|
[ 'The des Alizes', 3 ],
|
|
[ 'Matcha', 2 ],
|
|
[ 'Kilimanjaro', 1]
|
|
].forEach(function ([ key, value ]) {
|
|
map.set(key, value);
|
|
});
|
|
var iterator = map[Symbol.iterator]();
|
|
iteratorShape(iterator);
|
|
|
|
var keyIterator = map.keys();
|
|
iteratorShape(keyIterator);
|
|
|
|
var keyValueIterator = map.entries();
|
|
iteratorShape(keyValueIterator);
|
|
|
|
sameNextMethods([map[Symbol.iterator](), map.keys(), map.entries()]);
|