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