// 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;