X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/tests/stress/map-iterators-next.js diff --git a/tests/stress/map-iterators-next.js b/tests/stress/map-iterators-next.js new file mode 100644 index 0000000..f893b73 --- /dev/null +++ b/tests/stress/map-iterators-next.js @@ -0,0 +1,111 @@ +// This test checks the behavior of the iterator.next methods on Map objects + +var testArray = [1,2,3,4,5,6] +var testMap = new Map(); +for (var [key, value] of testArray.entries()) { + testMap.set(key, value); +} +var keys = testMap.keys(); +var i = 0; +while (true) { + var {done, value: key} = keys.next(); + if (done) + break; + if (key >= testArray.length) + throw "Error: bad value: " + key; + i++; +} + +if (testMap.size !== i) + throw "Error: bad value: " + i; + +var value = keys.next().value; +if (value !== undefined) + throw "Error: bad value: " + value; + +var values = testMap.values(); +var i = 0; +while (true) { + var {done, value} = values.next(); + if (done) + break; + i++; + if (testArray.indexOf(value) === -1) + throw "Error: bad value: " + value; +} + +if (testMap.size !== i) + throw "Error: bad value: " + i; + +var value = values.next().value; +if (value !== undefined) + throw "Error: bad value: " + value; + +var entries = testMap.entries(); +var i = 0; +do { + var {done, value: entry} = entries.next(); + if (done) + break; + var [key, value] = entry; + if (value !== testMap.get(key)) + throw "Error: bad value: " + value + " " + testMap.get(key); + if (key >= testArray.length) + throw "Error: bad value: " + key; + i++; + if (testArray.indexOf(value) === -1) + throw "Error: bad value: " + value + " " + i; +} while (!done); + +if (testMap.size !== i) + throw "Error: bad value: " + i; + +var value = entries.next().value; +if (value !== undefined) + throw "Error: bad value: " + value; + +var entries = testMap.entries(); +var i = 0; +do { + var {done, value: entry} = entries.next(); + if (done) + break; + var [key, value] = entry; + if (value !== testMap.get(key)) + throw "Error: bad value: " + value + " " + testMap.get(key); + i++; + if (i % 4 === 0) + testMap.set(100000 + i, i); +} while (!done); + +if (testMap.size !== i) + throw "Error: bad value: " + i; + +var value = entries.next().value; +if (value !== undefined) + throw "Error: bad value: " + value; + +function otherKey(key) { + return (key + 1) % testArray.length; +} + +var entries = testMap.entries(); +var i = 0; +do { + var {done, value: entry} = entries.next(); + if (done) + break; + var [key, value] = entry; + if (value !== testMap.get(key)) + throw "Error: bad value: " + value + " " + testMap.get(key); + i++; + if (i % 4 === 0) + testMap.delete(otherKey(key)); +} while (!done); + +if (testMap.size !== i) + throw "Error: bad value: " + i; + +var value = entries.next().value; +if (value !== undefined) + throw "Error: bad value: " + value;