| Index: test/mjsunit/harmony/collections.js
|
| diff --git a/test/mjsunit/harmony/collections.js b/test/mjsunit/harmony/collections.js
|
| index 7bf7bf70639aaee83230ed9beefbcc15ad310eb5..040b969a8b66340a153abc83c82cc4aaf4345004 100644
|
| --- a/test/mjsunit/harmony/collections.js
|
| +++ b/test/mjsunit/harmony/collections.js
|
| @@ -852,3 +852,127 @@ for (var i = 9; i >= 0; i--) {
|
| });
|
| assertEquals(4950, accumulated);
|
| })();
|
| +
|
| +
|
| +(function TestMapForEachAllRemovedTransition() {
|
| + var map = new Map;
|
| + map.set(0, 0);
|
| +
|
| + var buffer = [];
|
| + map.forEach(function(v) {
|
| + buffer.push(v);
|
| + if (v === 0) {
|
| + for (var i = 1; i < 4; i++) {
|
| + map.set(i, i);
|
| + }
|
| + }
|
| +
|
| + if (v === 3) {
|
| + for (var i = 0; i < 4; i++) {
|
| + map.delete(i);
|
| + }
|
| + for (var i = 4; i < 8; i++) {
|
| + map.set(i, i);
|
| + }
|
| + }
|
| + });
|
| +
|
| + assertArrayEquals([0, 1, 2, 3, 4, 5, 6, 7], buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachClearTransition() {
|
| + var map = new Map;
|
| + map.set(0, 0);
|
| +
|
| + var i = 0;
|
| + var buffer = [];
|
| + map.forEach(function(v) {
|
| + buffer.push(v);
|
| + if (++i < 5) {
|
| + for (var j = 0; j < 5; j++) {
|
| + map.clear();
|
| + map.set(i, i);
|
| + }
|
| + }
|
| + });
|
| +
|
| + assertArrayEquals([0, 1, 2, 3, 4], buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachNestedNonTrivialTransition() {
|
| + var map = new Map;
|
| + map.set(0, 0);
|
| +
|
| + var i = 0;
|
| + var buffer = [];
|
| + map.forEach(function(v) {
|
| + buffer.push(v);
|
| +
|
| + if (++i > 16) return;
|
| +
|
| + if (v % 8 == 0) {
|
| + for (var j = 1; j <= 8; j++) {
|
| + map.set(v + j, v + j);
|
| + }
|
| + }
|
| +
|
| + if (v % 2 == 0) {
|
| + map.delete(v + 1);
|
| + map.delete(v + 3);
|
| + }
|
| + });
|
| +
|
| + for (var i = 0; i <= 16; i++) {
|
| + assertEquals(buffer[i], i * 2);
|
| + }
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachAllRemovedTransitionNoClear() {
|
| + var map = new Map;
|
| + map.set(0, 0);
|
| +
|
| + var buffer = [];
|
| + map.forEach(function(v) {
|
| + buffer.push(v);
|
| + if (v === 0) {
|
| + for (var i = 1; i < 8; i++) {
|
| + map.set(i, i);
|
| + }
|
| + }
|
| +
|
| + if (v === 4) {
|
| + for (var i = 0; i < 8; i++) {
|
| + map.delete(i);
|
| + }
|
| + }
|
| + });
|
| +
|
| + assertArrayEquals([0, 1, 2, 3, 4], buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachNoMoreElementsAfterTransition() {
|
| + var map = new Map;
|
| + map.set(0, 0);
|
| +
|
| + var buffer = [];
|
| + map.forEach(function(v) {
|
| + buffer.push(v);
|
| + if (v === 0) {
|
| + for (var i = 1; i < 16; i++) {
|
| + map.set(i, i);
|
| + }
|
| + }
|
| +
|
| + if (v === 4) {
|
| + for (var i = 5; i < 16; i++) {
|
| + map.delete(i);
|
| + }
|
| + }
|
| + });
|
| +
|
| + assertArrayEquals([0, 1, 2, 3, 4], buffer);
|
| +})();
|
|
|