]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - tests/stress/set-iterators-next.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / 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 (file)
index 0000000..a0e4165
--- /dev/null
@@ -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;