summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/test/browser_webconsole_output_05.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webconsole/test/browser_webconsole_output_05.js')
-rw-r--r--devtools/client/webconsole/test/browser_webconsole_output_05.js177
1 files changed, 177 insertions, 0 deletions
diff --git a/devtools/client/webconsole/test/browser_webconsole_output_05.js b/devtools/client/webconsole/test/browser_webconsole_output_05.js
new file mode 100644
index 000000000..53bfd768c
--- /dev/null
+++ b/devtools/client/webconsole/test/browser_webconsole_output_05.js
@@ -0,0 +1,177 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Test the webconsole output for various types of objects.
+
+"use strict";
+
+const TEST_URI = "data:text/html;charset=utf8,test for console output - 05";
+const {ELLIPSIS} = require("devtools/shared/l10n");
+
+// March, 1960: The first implementation of Lisp. From Wikipedia:
+//
+// > Lisp was first implemented by Steve Russell on an IBM 704 computer. Russell
+// > had read McCarthy's paper, and realized (to McCarthy's surprise) that the
+// > Lisp eval function could be implemented in machine code. The result was a
+// > working Lisp interpreter which could be used to run Lisp programs, or more
+// > properly, 'evaluate Lisp expressions.'
+var testDate = -310435200000;
+
+var inputTests = [
+ // 0
+ {
+ input: "/foo?b*\\s\"ar/igym",
+ output: "/foo?b*\\s\"ar/gimy",
+ printOutput: "/foo?b*\\s\"ar/gimy",
+ inspectable: true,
+ },
+
+ // 1
+ {
+ input: "null",
+ output: "null",
+ },
+
+ // 2
+ {
+ input: "undefined",
+ output: "undefined",
+ },
+
+ // 3
+ {
+ input: "true",
+ output: "true",
+ },
+
+ // 4
+ {
+ input: "new Boolean(false)",
+ output: "Boolean { false }",
+ printOutput: "false",
+ inspectable: true,
+ variablesViewLabel: "Boolean { false }"
+ },
+
+ // 5
+ {
+ input: "new Date(" + testDate + ")",
+ output: "Date " + (new Date(testDate)).toISOString(),
+ printOutput: (new Date(testDate)).toString(),
+ inspectable: true,
+ },
+
+ // 6
+ {
+ input: "new Date('test')",
+ output: "Invalid Date",
+ printOutput: "Invalid Date",
+ inspectable: true,
+ variablesViewLabel: "Invalid Date",
+ },
+
+ // 7
+ {
+ input: "Date.prototype",
+ output: /Object \{.*\}/,
+ printOutput: "Invalid Date",
+ inspectable: true,
+ variablesViewLabel: "Object",
+ },
+
+ // 8
+ {
+ input: "new Number(43)",
+ output: "Number { 43 }",
+ printOutput: "43",
+ inspectable: true,
+ variablesViewLabel: "Number { 43 }"
+ },
+
+ // 9
+ {
+ input: "new String('hello')",
+ output: /String { "hello", 6 more.* }/,
+ printOutput: "hello",
+ inspectable: true,
+ variablesViewLabel: "String"
+ },
+
+ // 10
+ {
+ input: "(function () { var s = new String('hello'); s.whatever = 23; " +
+ " return s;})()",
+ output: /String { "hello", whatever: 23, 6 more.* }/,
+ printOutput: "hello",
+ inspectable: true,
+ variablesViewLabel: "String"
+ },
+
+ // 11
+ {
+ input: "(function () { var s = new String('hello'); s[8] = 'x'; " +
+ " return s;})()",
+ output: /String { "hello", 8: "x", 6 more.* }/,
+ printOutput: "hello",
+ inspectable: true,
+ variablesViewLabel: "String"
+ },
+
+ // 12
+ {
+ // XXX: Can't test fulfilled and rejected promises, because promises get
+ // settled on the next tick of the event loop.
+ input: "new Promise(function () {})",
+ output: 'Promise { <state>: "pending" }',
+ printOutput: "[object Promise]",
+ inspectable: true,
+ variablesViewLabel: "Promise"
+ },
+
+ // 13
+ {
+ input: "(function () { var p = new Promise(function () {}); " +
+ "p.foo = 1; return p; }())",
+ output: 'Promise { <state>: "pending", foo: 1 }',
+ printOutput: "[object Promise]",
+ inspectable: true,
+ variablesViewLabel: "Promise"
+ },
+
+ // 14
+ {
+ input: "new Object({1: 'this\\nis\\nsupposed\\nto\\nbe\\na\\nvery" +
+ "\\nlong\\nstring\\n,shown\\non\\na\\nsingle\\nline', " +
+ "2: 'a shorter string', 3: 100})",
+ output: '[ <1 empty slot>, "this is supposed to be a very long ' + ELLIPSIS +
+ '", "a shorter string", 100 ]',
+ printOutput: "[object Object]",
+ inspectable: true,
+ variablesViewLabel: "Object[4]"
+ },
+
+ // 15
+ {
+ input: "new Proxy({a:1},[1,2,3])",
+ output: 'Proxy { <target>: Object, <handler>: Array[3] }',
+ printOutput: "[object Object]",
+ inspectable: true,
+ variablesViewLabel: "Proxy"
+ }
+];
+
+function test() {
+ requestLongerTimeout(2);
+ Task.spawn(function* () {
+ let {tab} = yield loadTab(TEST_URI);
+ let hud = yield openConsole(tab);
+ return checkOutputForInputs(hud, inputTests);
+ }).then(finishUp);
+}
+
+function finishUp() {
+ inputTests = testDate = null;
+ finishTest();
+}