Index: test/mjsunit/es6/collections.js |
diff --git a/test/mjsunit/es6/collections.js b/test/mjsunit/es6/collections.js |
index c58571950c9545861dfa9d99e8ac25ebde8913d4..911b748ed9de632d7da903f203d744fea2cfaa44 100644 |
--- a/test/mjsunit/es6/collections.js |
+++ b/test/mjsunit/es6/collections.js |
@@ -1015,6 +1015,9 @@ function TestSetConstructor(ctor) { |
assertThrows(function() { |
new ctor({}); |
}, TypeError); |
+ assertThrows(function() { |
+ new ctor(true); |
+ }, TypeError); |
// @@iterator not callable |
assertThrows(function() { |
@@ -1148,6 +1151,39 @@ TestSetConstructorNextNotAnObject(WeakSet); |
})(); |
+function TestSetConstructorIterableValue(ctor) { |
+ 'use strict'; |
+ // Strict mode is required to prevent implicit wrapping in the getter. |
+ Object.defineProperty(Number.prototype, Symbol.iterator, { |
+ get: function() { |
+ assertEquals('object', typeof this); |
+ return function() { |
+ return oneAndTwo.keys(); |
+ }; |
+ }, |
+ configurable: true |
+ }); |
+ |
+ var set = new ctor(42); |
+ assertSize(2, set); |
+ assertTrue(set.has(k1)); |
+ assertTrue(set.has(k2)); |
+ |
+ delete Number.prototype[Symbol.iterator]; |
+} |
+TestSetConstructorIterableValue(Set); |
+TestSetConstructorIterableValue(WeakSet); |
+ |
+ |
+(function TestSetConstructorStringValue() { |
+ var s = new Set('abc'); |
+ assertSize(3, s); |
+ assertTrue(s.has('a')); |
+ assertTrue(s.has('b')); |
+ assertTrue(s.has('c')); |
+})(); |
+ |
+ |
function TestMapConstructor(ctor) { |
var m = new ctor(null); |
assertSize(0, m); |
@@ -1159,6 +1195,9 @@ function TestMapConstructor(ctor) { |
assertThrows(function() { |
new ctor({}); |
}, TypeError); |
+ assertThrows(function() { |
+ new ctor(true); |
+ }, TypeError); |
// @@iterator not callable |
assertThrows(function() { |
@@ -1300,3 +1339,27 @@ TestMapConstructorIteratorNotObjectValues(WeakMap); |
new WeakMap([[1, 2]]) |
}, TypeError); |
})(); |
+ |
+ |
+function TestMapConstructorIterableValue(ctor) { |
+ 'use strict'; |
+ // Strict mode is required to prevent implicit wrapping in the getter. |
+ Object.defineProperty(Number.prototype, Symbol.iterator, { |
+ get: function() { |
+ assertEquals('object', typeof this); |
+ return function() { |
+ return oneAndTwo.entries(); |
+ }; |
+ }, |
+ configurable: true |
+ }); |
+ |
+ var map = new ctor(42); |
+ assertSize(2, map); |
+ assertEquals(1, map.get(k1)); |
+ assertEquals(2, map.get(k2)); |
+ |
+ delete Number.prototype[Symbol.iterator]; |
+} |
+TestMapConstructorIterableValue(Map); |
+TestMapConstructorIterableValue(WeakMap); |