// Array iterators reflect changes to elements of the underlying array. load(libdir + "asserts.js"); load(libdir + "iteration.js"); var arr = [0, 1, 2]; var it = arr[Symbol.iterator](); arr[0] = 1000; arr[2] = 2000; assertIteratorNext(it, 1000); assertIteratorNext(it, 1); assertIteratorNext(it, 2000); assertIteratorDone(it, undefined); // test that .keys() and .entries() have the same behaviour arr = [0, 1, 2]; var ki = arr.keys(); var ei = arr.entries(); arr[0] = 1000; arr[2] = 2000; assertIteratorNext(ki, 0); assertIteratorNext(ei, [0, 1000]); assertIteratorNext(ki, 1); assertIteratorNext(ei, [1, 1]); assertIteratorNext(ki, 2); assertIteratorNext(ei, [2, 2000]); assertIteratorDone(ki, undefined); assertIteratorDone(ei, undefined);