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