aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/inspector/runtime/console-table.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/inspector/runtime/console-table.js')
-rw-r--r--deps/v8/test/inspector/runtime/console-table.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/deps/v8/test/inspector/runtime/console-table.js b/deps/v8/test/inspector/runtime/console-table.js
new file mode 100644
index 0000000000..70e3548c14
--- /dev/null
+++ b/deps/v8/test/inspector/runtime/console-table.js
@@ -0,0 +1,102 @@
+// Copyright 2018 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.
+
+const { session, contextGroup, Protocol } =
+ InspectorTest.start('console.table');
+
+(async function test() {
+ Protocol.Runtime.enable();
+ Protocol.Runtime.evaluate({
+ expression: `console.table(['apples', 'oranges', 'bananas'])`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `function Person(firstName, lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ };
+ var me = new Person('John', 'Smith');
+ console.table(me);`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `var people = [
+ ['John', 'Smith'], ['Jane', 'Doe'], ['Emily', 'Jones']];
+ console.table(people);`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `function Person(firstName, lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+ }
+
+ var john = new Person('John', 'Smith');
+ var jane = new Person('Jane', 'Doe');
+ var emily = new Person('Emily', 'Jones');
+
+ console.table([john, jane, emily]);`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `var family = {};
+
+ family.mother = new Person('Jane', 'Smith');
+ family.father = new Person('John', 'Smith');
+ family.daughter = new Person('Emily', 'Smith');
+
+ console.table(family);`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `console.table([john, jane, emily], ['firstName'])`
+ });
+ await waitConsoleAPICalledAndDump();
+ Protocol.Runtime.evaluate({
+ expression: `var bigTable = new Array(999);
+ bigTable.fill(['a', 'b']);
+ console.table(bigTable);`
+ });
+ await waitConsoleAPICalledAndDump(true /* concise */);
+ Protocol.Runtime.evaluate({
+ expression: `var bigTable = new Array(1001);
+ bigTable.fill(['a', 'b']);
+ console.table(bigTable);`
+ });
+ await waitConsoleAPICalledAndDump(true /* concise */);
+ InspectorTest.completeTest();
+})()
+
+/**
+ * @param {boolean=} concise
+ */
+async function waitConsoleAPICalledAndDump(concise) {
+ const { params : {
+ args: [ arg ]
+ } } = await Protocol.Runtime.onceConsoleAPICalled();
+ const preview = arg.preview;
+ if (concise)
+ simplifyAndPrintLast(preview);
+ else
+ InspectorTest.logMessage(arg.preview);
+
+ function simplifyAndPrintLast(preview) {
+ if (!Array.isArray(preview.properties))
+ return;
+ const properties = preview.properties;
+ const lastProperty = properties[properties.length - 1];
+ if (lastProperty.valuePreview && lastProperty.valuePreview.properties) {
+ const innerProperties = lastProperty.valuePreview.properties;
+ InspectorTest.logMessage(`last value property:`);
+ InspectorTest.logMessage(innerProperties[innerProperties.length - 1]);
+ lastProperty.valuePreview.properties = `<ValuePreviewPropertiesArray(${innerProperties.length})>`;
+ }
+ InspectorTest.logMessage(`last property:`);
+ InspectorTest.logMessage(lastProperty);
+ preview.properties = `<PropertiesArray(${properties.length})>`;
+ InspectorTest.logMessage(`preview:`);
+ InspectorTest.logMessage(preview);
+ InspectorTest.logMessage(``);
+ }
+}