tor-browser

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

bits-toindex-errors.js (2740B)


      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 bits parameter
      5 esid: sec-bigint.asintn
      6 info: |
      7  BigInt.asIntN ( bits, bigint )
      8 
      9  1. Let bits be ? ToIndex(bits).
     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(RangeError, function() {
     16  BigInt.asIntN(-1, 0n);
     17 }, "ToIndex: throw when integerIndex < 0");
     18 assert.throws(RangeError, function() {
     19  BigInt.asIntN(-2.5, 0n);
     20 }, "ToIndex: throw when integerIndex < 0");
     21 assert.throws(RangeError, function() {
     22  BigInt.asIntN("-2.5", 0n);
     23 }, "ToIndex: parse Number => throw when integerIndex < 0");
     24 assert.throws(RangeError, function() {
     25  BigInt.asIntN(-Infinity, 0n);
     26 }, "ToIndex: throw when integerIndex < 0");
     27 assert.throws(RangeError, function() {
     28  BigInt.asIntN(9007199254740992, 0n);
     29 }, "ToIndex: throw when integerIndex > 2**53-1");
     30 assert.throws(RangeError, function() {
     31  BigInt.asIntN(Infinity, 0n);
     32 }, "ToIndex: throw when integerIndex > 2**53-1");
     33 assert.throws(TypeError, function() {
     34  BigInt.asIntN(0n, 0n);
     35 }, "ToIndex: BigInt => TypeError");
     36 assert.throws(TypeError, function() {
     37  BigInt.asIntN(Object(0n), 0n);
     38 }, "ToIndex: unbox object with internal slot => BigInt => TypeError");
     39 assert.throws(TypeError, function() {
     40  BigInt.asIntN({
     41    [Symbol.toPrimitive]: function() {
     42      return 0n;
     43    }
     44  }, 0n);
     45 }, "ToIndex: @@toPrimitive => BigInt => TypeError");
     46 assert.throws(TypeError, function() {
     47  BigInt.asIntN({
     48    valueOf: function() {
     49      return 0n;
     50    }
     51  }, 0n);
     52 }, "ToIndex: valueOf => BigInt => TypeError");
     53 assert.throws(TypeError, function() {
     54  BigInt.asIntN({
     55    toString: function() {
     56      return 0n;
     57    }
     58  }, 0n);
     59 }, "ToIndex: toString => BigInt => TypeError");
     60 assert.throws(TypeError, function() {
     61  BigInt.asIntN(Symbol("1"), 0n);
     62 }, "ToIndex: Symbol => TypeError");
     63 assert.throws(TypeError, function() {
     64  BigInt.asIntN(Object(Symbol("1")), 0n);
     65 }, "ToIndex: unbox object with internal slot => Symbol => TypeError");
     66 assert.throws(TypeError, function() {
     67  BigInt.asIntN({
     68    [Symbol.toPrimitive]: function() {
     69      return Symbol("1");
     70    }
     71  }, 0n);
     72 }, "ToIndex: @@toPrimitive => Symbol => TypeError");
     73 assert.throws(TypeError, function() {
     74  BigInt.asIntN({
     75    valueOf: function() {
     76      return Symbol("1");
     77    }
     78  }, 0n);
     79 }, "ToIndex: valueOf => Symbol => TypeError");
     80 assert.throws(TypeError, function() {
     81  BigInt.asIntN({
     82    toString: function() {
     83      return Symbol("1");
     84    }
     85  }, 0n);
     86 }, "ToIndex: toString => Symbol => TypeError");
     87 
     88 reportCompare(0, 0);