| Index: test/mjsunit/harmony/collections.js
|
| diff --git a/test/mjsunit/harmony/collections.js b/test/mjsunit/harmony/collections.js
|
| index b33d08063d711491c1177600df5ac4f691c33ba5..59dbda31e47ba934c29af441712c3e2160196969 100644
|
| --- a/test/mjsunit/harmony/collections.js
|
| +++ b/test/mjsunit/harmony/collections.js
|
| @@ -507,3 +507,147 @@ for (var i = 9; i >= 0; i--) {
|
| assertEquals('minus', m.get(0));
|
| assertEquals('minus', m.get(-0));
|
| })();
|
| +
|
| +
|
| +(function TestSetForEach() {
|
| + var set = new Set();
|
| + set.add('a');
|
| + set.add('b');
|
| + set.add('c');
|
| +
|
| + var buffer = '';
|
| + var receiver = {};
|
| + set.forEach(function(v, k, s) {
|
| + assertSame(v, k);
|
| + assertSame(set, s);
|
| + assertSame(this, receiver);
|
| + buffer += v;
|
| + if (v === 'a') {
|
| + set.delete('b');
|
| + set.add('d');
|
| + set.add('e');
|
| + set.add('f');
|
| + } else if (v === 'c') {
|
| + set.add('b');
|
| + set.delete('e');
|
| + }
|
| + }, receiver);
|
| +
|
| + assertEquals('acdfb', buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestSetForEachClear() {
|
| + var set = new Set();
|
| + set.add('a');
|
| + set.add('b');
|
| + set.add('c');
|
| +
|
| + var buffer = '';
|
| + var receiver = {};
|
| + set.forEach(function(v, k, s) {
|
| + assertSame(v, k);
|
| + assertSame(set, s);
|
| + assertSame(this, receiver);
|
| + buffer += v;
|
| + if (v === 'a') {
|
| + set.clear();
|
| + set.add('d');
|
| + set.add('e');
|
| + }
|
| + }, receiver);
|
| +
|
| + assertEquals('ade', buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestSetForEachNested() {
|
| + var set = new Set();
|
| + set.add('a');
|
| + set.add('b');
|
| + set.add('c');
|
| +
|
| + var buffer = '';
|
| + var receiver = {};
|
| + set.forEach(function(v) {
|
| + buffer += v;
|
| + set.forEach(function(v) {
|
| + buffer += v;
|
| + if (v === 'a') {
|
| + set.delete('b');
|
| + }
|
| + });
|
| + });
|
| +
|
| + assertEquals('aaccac', buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEach() {
|
| + var map = new Map();
|
| + map.set(0, 'a');
|
| + map.set(1, 'b');
|
| + map.set(2, 'c');
|
| +
|
| + var buffer = [];
|
| + var receiver = {};
|
| + map.forEach(function(v, k, m) {
|
| + assertEquals(map, m);
|
| + assertEquals(this, receiver);
|
| + buffer.push(k, v);
|
| + if (k === 0) {
|
| + map.delete(1);
|
| + map.set(3, 'd');
|
| + map.set(4, 'e');
|
| + map.set(5, 'f');
|
| + } else if (k === 2) {
|
| + map.set(1, 'B');
|
| + map.delete(4);
|
| + }
|
| + }, receiver);
|
| +
|
| + assertArrayEquals([0, 'a', 2, 'c', 3, 'd', 5, 'f', 1, 'B'], buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachClear() {
|
| + var map = new Map();
|
| + map.set(0, 'a');
|
| + map.set(1, 'b');
|
| + map.set(2, 'c');
|
| +
|
| + var buffer = [];
|
| + var receiver = {};
|
| + map.forEach(function(v, k) {
|
| + buffer.push(k, v);
|
| + if (k === 0) {
|
| + map.clear();
|
| + map.set(3, 'd');
|
| + map.set(4, 'e');
|
| + }
|
| + }, receiver);
|
| +
|
| + assertArrayEquals([0, 'a', 3, 'd', 4, 'e'], buffer);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachNested() {
|
| + var map = new Map();
|
| + map.set(0, 'a');
|
| + map.set(1, 'b');
|
| + map.set(2, 'c');
|
| +
|
| + var buffer = [];
|
| + var receiver = {};
|
| + map.forEach(function(v, k) {
|
| + buffer.push(k, v);
|
| + map.forEach(function(v, k) {
|
| + buffer.push(k, v);
|
| + if (k === 0) {
|
| + map.delete(1);
|
| + }
|
| + });
|
| + });
|
| +
|
| + assertArrayEquals([0, 'a', 0, 'a', 2, 'c', 2, 'c', 0, 'a', 2, 'c'], buffer);
|
| +})();
|
|
|