Index: test/inspector/runtime/set-or-map-entries.js |
diff --git a/test/inspector/runtime/set-or-map-entries.js b/test/inspector/runtime/set-or-map-entries.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ccefb794d6cd00a0f081daa09b7eb1f7a1e1f6d4 |
--- /dev/null |
+++ b/test/inspector/runtime/set-or-map-entries.js |
@@ -0,0 +1,52 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+print("Test that Runtime.getProperties doesn't truncate set and map entries in internalProperties.") |
+ |
+InspectorTest.evaluateInPage(` |
+ function createSet(size) { |
+ var s = new Set(); |
+ var a = {}; |
+ a.a = a; |
+ for (var i = 0; i < size; ++i) s.add({ wrapper: a}); |
+ return s; |
+ } |
+ |
+ function createMap(size) { |
+ var m = new Map(); |
+ var a = {}; |
+ a.a = a; |
+ for (var i = 0; i < size; ++i) m.set(i, { wrapper: a}); |
+ return m; |
+ } |
+`); |
+ |
+InspectorTest.sendCommand("Debugger.enable"); |
+InspectorTest.sendCommand("Runtime.enable"); |
+ |
+testExpression("createSet(10)") |
+ .then(() => testExpression("createSet(1000)")) |
+ .then(() => testExpression("createMap(10)")) |
+ .then(() => testExpression("createMap(1000)")) |
+ .then(() => InspectorTest.completeTest()); |
+ |
+function testExpression(expression) |
+{ |
+ return InspectorTest.sendCommandPromise("Runtime.evaluate", { "expression": expression}) |
+ .then(result => InspectorTest.sendCommandPromise("Runtime.getProperties", { ownProperties: true, objectId: result.result.result.objectId })) |
+ .then(message => dumpEntriesDescription(expression, message)); |
+} |
+ |
+function dumpEntriesDescription(expression, message) |
+{ |
+ InspectorTest.log(`Entries for "${expression}"`); |
+ var properties = message.result.internalProperties; |
+ var property; |
+ if (properties) |
+ property = properties.find(property => property.name === "[[Entries]]"); |
+ if (!property) |
+ InspectorTest.log("[[Entries]] not found"); |
+ else |
+ InspectorTest.log(property.value.description); |
+} |