Index: test/mjsunit/harmony/mirror-collections.js |
diff --git a/test/mjsunit/harmony/mirror-collections.js b/test/mjsunit/harmony/mirror-collections.js |
index 9df5b68c288e0311b9d79875982b2d644a1ab3be..33894eda3e13f2618141fa4fea2e1868af13b9ec 100644 |
--- a/test/mjsunit/harmony/mirror-collections.js |
+++ b/test/mjsunit/harmony/mirror-collections.js |
@@ -22,6 +22,24 @@ function testMapMirror(mirror) { |
assertEquals('map', fromJSON.type); |
} |
+function testSetMirror(mirror) { |
+ // Create JSON representation. |
+ var serializer = debug.MakeMirrorSerializer(); |
+ var json = JSON.stringify(serializer.serializeValue(mirror)); |
+ |
+ // Check the mirror hierachy. |
+ assertTrue(mirror instanceof debug.Mirror); |
+ assertTrue(mirror instanceof debug.ValueMirror); |
+ assertTrue(mirror instanceof debug.ObjectMirror); |
+ assertTrue(mirror instanceof debug.SetMirror); |
+ |
+ assertTrue(mirror.isSet()); |
+ |
+ // Parse JSON representation and check. |
+ var fromJSON = eval('(' + json + ')'); |
+ assertEquals('set', fromJSON.type); |
+} |
+ |
var o1 = new Object(); |
var o2 = new Object(); |
var o3 = new Object(); |
@@ -33,22 +51,35 @@ map.set(o2, 22); |
map.delete(o1); |
var mapMirror = debug.MakeMirror(map); |
testMapMirror(mapMirror); |
-var entries = mapMirror.entries(); |
-assertEquals(1, entries.length); |
-assertSame(o2, entries[0].key); |
-assertEquals(22, entries[0].value); |
+var mapEntries = mapMirror.entries(); |
+assertEquals(1, mapEntries.length); |
+assertSame(o2, mapEntries[0].key); |
+assertEquals(22, mapEntries[0].value); |
map.set(o1, 33); |
map.set(o3, o2); |
map.delete(o2); |
map.set(undefined, 44); |
-entries = mapMirror.entries(); |
-assertEquals(3, entries.length); |
-assertSame(o1, entries[0].key); |
-assertEquals(33, entries[0].value); |
-assertSame(o3, entries[1].key); |
-assertSame(o2, entries[1].value); |
-assertEquals(undefined, entries[2].key); |
-assertEquals(44, entries[2].value); |
+mapEntries = mapMirror.entries(); |
+assertEquals(3, mapEntries.length); |
+assertSame(o1, mapEntries[0].key); |
+assertEquals(33, mapEntries[0].value); |
+assertSame(o3, mapEntries[1].key); |
+assertSame(o2, mapEntries[1].value); |
+assertEquals(undefined, mapEntries[2].key); |
+assertEquals(44, mapEntries[2].value); |
+ |
+// Test the mirror object for Sets |
+var set = new Set(); |
+set.add(o1); |
+set.add(o2); |
+set.delete(o1); |
+set.add(undefined); |
+var setMirror = debug.MakeMirror(set); |
+testSetMirror(setMirror); |
+var setEntries = setMirror.entries(); |
+assertEquals(2, setEntries.length); |
+assertSame(o2, setEntries[0]); |
+assertEquals(undefined, setEntries[1]); |
// Test the mirror object for WeakMaps |
var weakMap = new WeakMap(); |
@@ -80,3 +111,34 @@ function testWeakMapEntries(weakMapMirror) { |
} |
testWeakMapEntries(weakMapMirror); |
+ |
+// Test the mirror object for WeakSets |
+var weakSet = new WeakSet(); |
+weakSet.add(o1); |
+weakSet.add(new Object()); |
+weakSet.add(o2); |
+weakSet.add(new Object()); |
+weakSet.add(new Object()); |
+weakSet.add(o3); |
+weakSet.delete(o2); |
+var weakSetMirror = debug.MakeMirror(weakSet); |
+testSetMirror(weakSetMirror); |
+assertTrue(weakSetMirror.entries().length <= 5); |
+gc(); |
+ |
+function testWeakSetEntries(weakSetMirror) { |
+ var entries = weakSetMirror.entries(); |
+ assertEquals(2, entries.length); |
+ var found = 0; |
+ for (var i = 0; i < entries.length; i++) { |
+ if (Object.is(entries[i], o1)) { |
+ found++; |
+ } |
+ if (Object.is(entries[i], o3)) { |
+ found++; |
+ } |
+ } |
+ assertEquals(2, found); |
+} |
+ |
+testWeakSetEntries(weakSetMirror); |