tor-browser

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

bigint-tobigint-errors.js (5101B)


      1 // Copyright (C) 2017 Josh Wolfe. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 /*---
      4 description: BigInt.asIntN type coercion for bigint parameter
      5 esid: sec-bigint.asintn
      6 info: |
      7  BigInt.asIntN ( bits, bigint )
      8 
      9  2. Let bigint ? ToBigInt(bigint).
     10 features: [BigInt, computed-property-names, Symbol, Symbol.toPrimitive]
     11 ---*/
     12 assert.sameValue(typeof BigInt, 'function');
     13 assert.sameValue(typeof BigInt.asIntN, 'function');
     14 
     15 assert.throws(TypeError, function () {
     16  BigInt.asIntN();
     17 }, "ToBigInt: no argument => undefined => TypeError");
     18 assert.throws(TypeError, function () {
     19  BigInt.asIntN(0);
     20 }, "ToBigInt: no argument => undefined => TypeError");
     21 
     22 assert.throws(TypeError, function() {
     23  BigInt.asIntN(0, undefined);
     24 }, "ToBigInt: undefined => TypeError");
     25 assert.throws(TypeError, function() {
     26  BigInt.asIntN(0, {
     27    [Symbol.toPrimitive]: function() {
     28      return undefined;
     29    }
     30  });
     31 }, "ToBigInt: @@toPrimitive => undefined => TypeError");
     32 assert.throws(TypeError, function() {
     33  BigInt.asIntN(0, {
     34    valueOf: function() {
     35      return undefined;
     36    }
     37  });
     38 }, "ToBigInt: valueOf => undefined => TypeError");
     39 assert.throws(TypeError, function() {
     40  BigInt.asIntN(0, {
     41    toString: function() {
     42      return undefined;
     43    }
     44  });
     45 }, "ToBigInt: toString => undefined => TypeError");
     46 assert.throws(TypeError, function() {
     47  BigInt.asIntN(0, null);
     48 }, "ToBigInt: null => TypeError");
     49 assert.throws(TypeError, function() {
     50  BigInt.asIntN(0, {
     51    [Symbol.toPrimitive]: function() {
     52      return null;
     53    }
     54  });
     55 }, "ToBigInt: @@toPrimitive => null => TypeError");
     56 assert.throws(TypeError, function() {
     57  BigInt.asIntN(0, {
     58    valueOf: function() {
     59      return null;
     60    }
     61  });
     62 }, "ToBigInt: valueOf => null => TypeError");
     63 assert.throws(TypeError, function() {
     64  BigInt.asIntN(0, {
     65    toString: function() {
     66      return null;
     67    }
     68  });
     69 }, "ToBigInt: toString => null => TypeError");
     70 assert.throws(TypeError, function() {
     71  BigInt.asIntN(0, 0);
     72 }, "ToBigInt: Number => TypeError");
     73 assert.throws(TypeError, function() {
     74  BigInt.asIntN(0, Object(0));
     75 }, "ToBigInt: unbox object with internal slot => Number => TypeError");
     76 assert.throws(TypeError, function() {
     77  BigInt.asIntN(0, {
     78    [Symbol.toPrimitive]: function() {
     79      return 0;
     80    }
     81  });
     82 }, "ToBigInt: @@toPrimitive => Number => TypeError");
     83 assert.throws(TypeError, function() {
     84  BigInt.asIntN(0, {
     85    valueOf: function() {
     86      return 0;
     87    }
     88  });
     89 }, "ToBigInt: valueOf => Number => TypeError");
     90 assert.throws(TypeError, function() {
     91  BigInt.asIntN(0, {
     92    toString: function() {
     93      return 0;
     94    }
     95  });
     96 }, "ToBigInt: toString => Number => TypeError");
     97 assert.throws(TypeError, function() {
     98  BigInt.asIntN(0, NaN);
     99 }, "ToBigInt: Number => TypeError");
    100 assert.throws(TypeError, function() {
    101  BigInt.asIntN(0, Infinity);
    102 }, "ToBigInt: Number => TypeError");
    103 assert.throws(TypeError, function() {
    104  BigInt.asIntN(0, Symbol("1"));
    105 }, "ToBigInt: Symbol => TypeError");
    106 assert.throws(TypeError, function() {
    107  BigInt.asIntN(0, Object(Symbol("1")));
    108 }, "ToBigInt: unbox object with internal slot => Symbol => TypeError");
    109 assert.throws(TypeError, function() {
    110  BigInt.asIntN(0, {
    111    [Symbol.toPrimitive]: function() {
    112      return Symbol("1");
    113    }
    114  });
    115 }, "ToBigInt: @@toPrimitive => Symbol => TypeError");
    116 assert.throws(TypeError, function() {
    117  BigInt.asIntN(0, {
    118    valueOf: function() {
    119      return Symbol("1");
    120    }
    121  });
    122 }, "ToBigInt: valueOf => Symbol => TypeError");
    123 assert.throws(TypeError, function() {
    124  BigInt.asIntN(0, {
    125    toString: function() {
    126      return Symbol("1");
    127    }
    128  });
    129 }, "ToBigInt: toString => Symbol => TypeError");
    130 assert.throws(SyntaxError, function() {
    131  BigInt.asIntN(0, "a");
    132 }, "ToBigInt: unparseable BigInt");
    133 assert.throws(SyntaxError, function() {
    134  BigInt.asIntN(0, "0b2");
    135 }, "ToBigInt: unparseable BigInt binary");
    136 assert.throws(SyntaxError, function() {
    137  BigInt.asIntN(0, Object("0b2"));
    138 }, "ToBigInt: unbox object with internal slot => unparseable BigInt binary");
    139 assert.throws(SyntaxError, function() {
    140  BigInt.asIntN(0, {
    141    [Symbol.toPrimitive]: function() {
    142      return "0b2";
    143    }
    144  });
    145 }, "ToBigInt: @@toPrimitive => unparseable BigInt binary");
    146 assert.throws(SyntaxError, function() {
    147  BigInt.asIntN(0, {
    148    valueOf: function() {
    149      return "0b2";
    150    }
    151  });
    152 }, "ToBigInt: valueOf => unparseable BigInt binary");
    153 assert.throws(SyntaxError, function() {
    154  BigInt.asIntN(0, {
    155    toString: function() {
    156      return "0b2";
    157    }
    158  });
    159 }, "ToBigInt: toString => unparseable BigInt binary");
    160 assert.throws(SyntaxError, function() {
    161  BigInt.asIntN(0, "   0b2   ");
    162 }, "ToBigInt: unparseable BigInt with leading/trailing whitespace");
    163 assert.throws(SyntaxError, function() {
    164  BigInt.asIntN(0, "0o8");
    165 }, "ToBigInt: unparseable BigInt octal");
    166 assert.throws(SyntaxError, function() {
    167  BigInt.asIntN(0, "0xg");
    168 }, "ToBigInt: unparseable BigInt hex");
    169 assert.throws(SyntaxError, function() {
    170  BigInt.asIntN(0, "1n");
    171 }, "ToBigInt: unparseable BigInt due to literal suffix");
    172 
    173 reportCompare(0, 0);