function shouldBe(actual, expected) { if (actual !== expected) throw new Error('bad value: ' + actual); } var array = [ 42 ]; shouldBe(JSON.stringify(array.values().next()), `{"value":42,"done":false}`); shouldBe(JSON.stringify(array.keys().next()), `{"value":0,"done":false}`); shouldBe(JSON.stringify(array.entries().next()), `{"value":[0,42],"done":false}`); async function* asyncIterator() { yield 42; } var iterator = asyncIterator(); iterator.next().then(function (value) { shouldBe(JSON.stringify(value), `{"value":42,"done":false}`); }).catch($vm.abort); function* generator() { yield 42; } shouldBe(JSON.stringify(generator().next()), `{"value":42,"done":false}`); var map = new Map([[0,42]]); shouldBe(JSON.stringify(map.keys().next()), `{"value":0,"done":false}`); shouldBe(JSON.stringify(map.values().next()), `{"value":42,"done":false}`); shouldBe(JSON.stringify(map.entries().next()), `{"value":[0,42],"done":false}`); var set = new Set([42]); shouldBe(JSON.stringify(set.keys().next()), `{"value":42,"done":false}`); shouldBe(JSON.stringify(set.values().next()), `{"value":42,"done":false}`); shouldBe(JSON.stringify(set.entries().next()), `{"value":[42,42],"done":false}`); var string = "Cocoa"; shouldBe(JSON.stringify(string[Symbol.iterator]().next()), `{"value":"C","done":false}`);