tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

regress-444787.js (2440B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 //-----------------------------------------------------------------------------
      7 var BUGNUMBER = 444787;
      8 var summary = 'Object.getPrototypeOf';
      9 var actual = '';
     10 var expect = '';
     11 
     12 
     13 //-----------------------------------------------------------------------------
     14 test();
     15 //-----------------------------------------------------------------------------
     16 
     17 function test()
     18 {
     19  printBugNumber(BUGNUMBER);
     20  printStatus (summary);
     21 
     22  var i;
     23  var type;
     24  var instance;
     25  var types = [
     26    Array,
     27    Boolean,
     28    Date,
     29    Error,
     30    Function,
     31    Math,
     32    Number,
     33    Object,
     34    RegExp,
     35    String,
     36    ];
     37 
     38  for (i = 0; i < types.length; i++)
     39  {
     40    type = types[i];
     41 
     42    if (typeof type.__proto__ != 'undefined')
     43    {
     44      expect = type.__proto__;
     45      actual = Object.getPrototypeOf(type);
     46      reportCompare(expect, actual, summary + ': ' + type.name);
     47    }
     48 
     49    try
     50    {
     51      eval('instance = new ' + type.name);
     52      expect = type.prototype;
     53      actual = Object.getPrototypeOf(instance);
     54      reportCompare(expect, actual, summary + ': new ' + type.name);
     55    }
     56    catch(ex) {
     57      if (ex instanceof TypeError) {
     58        print('Ignore ' + ex);
     59      } else {
     60        actual = ex + '';
     61        reportCompare(expect, actual, summary + ': new ' + type.name);
     62      }
     63    }
     64 
     65  }
     66 
     67  types = [null, undefined];
     68 
     69  for (i = 0; i < types.length; i++)
     70  {
     71    type = types[i];
     72    expect = 'TypeError: Object.getPrototype is not a function';
     73    try
     74    {
     75      actual = Object.getPrototype(null);
     76    }
     77    catch(ex)
     78    {
     79      actual = ex + '';
     80    }
     81    reportCompare(expect, actual, summary + ': ' + type);
     82  }
     83 
     84  var objects = [
     85    {instance: [0], type: Array},
     86    {instance: (function () {}), type: Function},
     87    {instance: eval, type: Function},
     88    {instance: parseInt, type: Function},
     89    {instance: {a: ''}, type: Object},
     90    {instance: /foo/, type: RegExp}
     91    ];
     92 
     93  for (i = 0; i < objects.length; i++)
     94  {
     95    instance = objects[i].instance;
     96    type     = objects[i].type;
     97    expect   = type.prototype;
     98    actual   = Object.getPrototypeOf(instance);
     99    reportCompare(expect, actual, summary + ' instance: ' + instance + ', type: ' + type.name);
    100  }
    101 }