browser/devtools/webconsole/test/browser_webconsole_output_02.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/publicdomain/zero/1.0/
     4  */
     6 // Test the webconsole output for various types of objects.
     8 const TEST_URI = "http://example.com/browser/browser/devtools/webconsole/test/test-console-output-02.html";
    10 let inputTests = [
    11   // 0 - native named function
    12   {
    13     input: "document.getElementById",
    14     output: "function getElementById()",
    15     printOutput: "function getElementById() {\n    [native code]\n}",
    16     inspectable: true,
    17     variablesViewLabel: "getElementById()",
    18   },
    20   // 1 - anonymous function
    21   {
    22     input: "(function() { return 42; })",
    23     output: "function ()",
    24     printOutput: "function () { return 42; }",
    25     inspectable: true,
    26   },
    28   // 2 - named function
    29   {
    30     input: "window.testfn1",
    31     output: "function testfn1()",
    32     printOutput: "function testfn1() { return 42; }",
    33     inspectable: true,
    34     variablesViewLabel: "testfn1()",
    35   },
    37   // 3 - anonymous function, but spidermonkey gives us an inferred name.
    38   {
    39     input: "testobj1.testfn2",
    40     output: "function testobj1.testfn2()",
    41     printOutput: "function () { return 42; }",
    42     inspectable: true,
    43     variablesViewLabel: "testobj1.testfn2()",
    44   },
    46   // 4 - named function with custom display name
    47   {
    48     input: "window.testfn3",
    49     output: "function testfn3DisplayName()",
    50     printOutput: "function testfn3() { return 42; }",
    51     inspectable: true,
    52     variablesViewLabel: "testfn3DisplayName()",
    53   },
    55   // 5 - basic array
    56   {
    57     input: "window.array1",
    58     output: 'Array [ 1, 2, 3, "a", "b", "c", "4", "5" ]',
    59     printOutput: "1,2,3,a,b,c,4,5",
    60     inspectable: true,
    61     variablesViewLabel: "Array[8]",
    62   },
    64   // 6 - array with objects
    65   {
    66     input: "window.array2",
    67     output: 'Array [ "a", HTMLDocument \u2192 test-console-output-02.html, <body>, ' +
    68             "DOMStringMap[0], DOMTokenList[0] ]",
    69     printOutput: '"a,[object HTMLDocument],[object HTMLBodyElement],' +
    70                  '[object DOMStringMap],"',
    71     inspectable: true,
    72     variablesViewLabel: "Array[5]",
    73   },
    75   // 7 - array with more than 10 elements
    76   {
    77     input: "window.array3",
    78     output: 'Array [ 1, Window \u2192 test-console-output-02.html, null, "a", "b", ' +
    79             'undefined, false, "", -Infinity, testfn3DisplayName(), 3 more\u2026 ]',
    80     printOutput: '"1,[object Window],,a,b,,false,,-Infinity,' +
    81                  'function testfn3() { return 42; },[object Object],foo,bar"',
    82     inspectable: true,
    83     variablesViewLabel: "Array[13]",
    84   },
    86   // 8 - array with holes and a cyclic reference
    87   {
    88     input: "window.array4",
    89     output: 'Array [ , , , , , "test", Array[7] ]',
    90     printOutput: '",,,,,test,"',
    91     inspectable: true,
    92     variablesViewLabel: "Array[7]",
    93   },
    95   // 9
    96   {
    97     input: "window.typedarray1",
    98     output: 'Int32Array [ 1, 287, 8651, 40983, 8754 ]',
    99     printOutput: "[object Int32Array]",
   100     inspectable: true,
   101     variablesViewLabel: "Int32Array[5]",
   102   },
   104   // 10 - Set with cyclic reference
   105   {
   106     input: "window.set1",
   107     output: 'Set [ 1, 2, null, Array[13], "a", "b", undefined, <head>, Set[9] ]',
   108     printOutput: "[object Set]",
   109     inspectable: true,
   110     variablesViewLabel: "Set[9]",
   111   },
   113   // 11 - Object with cyclic reference and a getter
   114   {
   115     input: "window.testobj2",
   116     output: 'Object { a: "b", c: "d", e: 1, f: "2", foo: Object, bar: Object, ' +
   117             "getterTest: Getter }",
   118     printOutput: "[object Object]",
   119     inspectable: true,
   120     variablesViewLabel: "Object",
   121   },
   123   // 12 - Object with more than 10 properties
   124   {
   125     input: "window.testobj3",
   126     output: 'Object { a: "b", c: "d", e: 1, f: "2", g: true, h: null, i: undefined, ' +
   127             'j: "", k: StyleSheetList[0], l: NodeList[5], 2 more\u2026 }',
   128     printOutput: "[object Object]",
   129     inspectable: true,
   130     variablesViewLabel: "Object",
   131   },
   133   // 13 - Object with a non-enumerable property that we do not show
   134   {
   135     input: "window.testobj4",
   136     output: 'Object { a: "b", c: "d", 1 more\u2026 }',
   137     printOutput: "[object Object]",
   138     inspectable: true,
   139     variablesViewLabel: "Object",
   140   },
   142   // 14 - Map with cyclic references
   143   {
   144     input: "window.map1",
   145     output: 'Map { a: "b", HTMLCollection[2]: Object, Map[3]: Set[9] }',
   146     printOutput: "[object Map]",
   147     inspectable: true,
   148     variablesViewLabel: "Map[3]",
   149   },
   150 ];
   152 function test() {
   153   requestLongerTimeout(2);
   154   Task.spawn(function*() {
   155     const {tab} = yield loadTab(TEST_URI);
   156     const hud = yield openConsole(tab);
   157     yield checkOutputForInputs(hud, inputTests);
   158     inputTests = null;
   159   }).then(finishTest);
   160 }

mercurial