Chromium Code Reviews| 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); |
|
rossberg
2014/05/16 16:10:18
If I read this correctly, this only ever deletes t
arv (Not doing code reviews)
2014/05/20 00:29:58
Changed this test. It now has a 4 iteration transi
|
| + 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); |
| +})(); |