| Index: test/mjsunit/es6/collections.js
|
| diff --git a/test/mjsunit/es6/collections.js b/test/mjsunit/es6/collections.js
|
| index 940c0b9d1fab8a314b071e9d5cd6d50fab4cd41d..24aaa4c7486b41f51c028e13ad9b585c6a09c59a 100644
|
| --- a/test/mjsunit/es6/collections.js
|
| +++ b/test/mjsunit/es6/collections.js
|
| @@ -691,6 +691,33 @@ for (var i = 9; i >= 0; i--) {
|
| assertEquals(4950, accumulated);
|
| })();
|
|
|
| +
|
| +(function TestSetForEachReceiverAsObject() {
|
| + var set = new Set(["1", "2"]);
|
| +
|
| + // Create a new object in each function call when receiver is a
|
| + // primitive value. See ECMA-262, Annex C.
|
| + var a = [];
|
| + set.forEach(function() { a.push(this) }, "");
|
| + assertTrue(a[0] !== a[1]);
|
| +
|
| + // Do not create a new object otherwise.
|
| + a = [];
|
| + set.forEach(function() { a.push(this); }, {});
|
| + assertFalse(a[0] !== a[1]);
|
| +})();
|
| +
|
| +
|
| +(function TestSetForEachReceiverAsObjectInStrictMode() {
|
| + var set = new Set(["1", "2"]);
|
| +
|
| + // In strict mode primitive values should not be coerced to an object.
|
| + var a = [];
|
| + set.forEach(function() { 'use strict'; a.push(this); }, "");
|
| + assertTrue(a[0] === "" && a[0] === a[1]);
|
| +})();
|
| +
|
| +
|
| (function TestMapForEachInvalidTypes() {
|
| assertThrows(function() {
|
| Map.prototype.map.forEach.call({});
|
| @@ -998,6 +1025,36 @@ for (var i = 9; i >= 0; i--) {
|
| })();
|
|
|
|
|
| +(function TestMapForEachReceiverAsObject() {
|
| + var map = new Map();
|
| + map.set("key1", "value1");
|
| + map.set("key2", "value2");
|
| +
|
| + // Create a new object in each function call when receiver is a
|
| + // primitive value. See ECMA-262, Annex C.
|
| + var a = [];
|
| + map.forEach(function() { a.push(this) }, "");
|
| + assertTrue(a[0] !== a[1]);
|
| +
|
| + // Do not create a new object otherwise.
|
| + a = [];
|
| + map.forEach(function() { a.push(this); }, {});
|
| + assertFalse(a[0] !== a[1]);
|
| +})();
|
| +
|
| +
|
| +(function TestMapForEachReceiverAsObjectInStrictMode() {
|
| + var map = new Map();
|
| + map.set("key1", "value1");
|
| + map.set("key2", "value2");
|
| +
|
| + // In strict mode primitive values should not be coerced to an object.
|
| + var a = [];
|
| + map.forEach(function() { 'use strict'; a.push(this); }, "");
|
| + assertTrue(a[0] === "" && a[0] === a[1]);
|
| +})();
|
| +
|
| +
|
| // Allows testing iterator-based constructors easily.
|
| var oneAndTwo = new Map();
|
| var k0 = {key: 0};
|
|
|