mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
178 lines
4.2 KiB
JavaScript
178 lines
4.2 KiB
JavaScript
/* -*- 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();
|
|
}
|