Index: test/inspector-protocol/runtime/set-or-map-entries.js |
diff --git a/test/inspector-protocol/runtime/set-or-map-entries.js b/test/inspector-protocol/runtime/set-or-map-entries.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..12992203212c8c4039c33531b2f733d6380eeeb8 |
--- /dev/null |
+++ b/test/inspector-protocol/runtime/set-or-map-entries.js |
@@ -0,0 +1,53 @@ |
+// 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()) |
+ .catch((e) => { InspectorTest.log(e); 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)) |
+ .catch((e) => { InspectorTest.log(e); InspectorTest.completeTest() }) |
dgozman
2016/09/28 20:28:19
Remove catch!
kozy
2016/09/30 02:04:32
Done.
|
+} |
+ |
+function dumpEntriesDescription(expression, message) |
+{ |
+ InspectorTest.log(`Entries for "${expression}"`); |
+ var properties = message.result.internalProperties; |
+ if (properties) |
+ properties = properties.filter((property) => property.name === "[[Entries]]"); |
+ if (!properties || properties.length === 0) |
+ InspectorTest.log("[[Entries]] not found"); |
+ else |
+ InspectorTest.log(properties[0].value.description); |
+} |