123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- // Copyright (C) 2017 Josh Wolfe. All rights reserved.
- // This code is governed by the BSD license found in the LICENSE file.
- /*---
- description: BigInt.asIntN type coercion for bigint parameter
- esid: pending
- info: |
- BigInt.asIntN ( bits, bigint )
- 2. Let bigint ? ToBigInt(bigint).
- features: [BigInt, computed-property-names, Symbol, Symbol.toPrimitive]
- ---*/
- assert.sameValue(typeof BigInt, 'function');
- assert.sameValue(typeof BigInt.asIntN, 'function');
- assert.throws(TypeError, function () {
- BigInt.asIntN();
- }, "ToBigInt: no argument => undefined => TypeError");
- assert.throws(TypeError, function () {
- BigInt.asIntN(0);
- }, "ToBigInt: no argument => undefined => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, undefined);
- }, "ToBigInt: undefined => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- [Symbol.toPrimitive]: function() {
- return undefined;
- }
- });
- }, "ToBigInt: @@toPrimitive => undefined => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- valueOf: function() {
- return undefined;
- }
- });
- }, "ToBigInt: valueOf => undefined => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- toString: function() {
- return undefined;
- }
- });
- }, "ToBigInt: toString => undefined => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, null);
- }, "ToBigInt: null => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- [Symbol.toPrimitive]: function() {
- return null;
- }
- });
- }, "ToBigInt: @@toPrimitive => null => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- valueOf: function() {
- return null;
- }
- });
- }, "ToBigInt: valueOf => null => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- toString: function() {
- return null;
- }
- });
- }, "ToBigInt: toString => null => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, 0);
- }, "ToBigInt: Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, Object(0));
- }, "ToBigInt: unbox object with internal slot => Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- [Symbol.toPrimitive]: function() {
- return 0;
- }
- });
- }, "ToBigInt: @@toPrimitive => Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- valueOf: function() {
- return 0;
- }
- });
- }, "ToBigInt: valueOf => Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- toString: function() {
- return 0;
- }
- });
- }, "ToBigInt: toString => Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, NaN);
- }, "ToBigInt: Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, Infinity);
- }, "ToBigInt: Number => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, Symbol("1"));
- }, "ToBigInt: Symbol => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, Object(Symbol("1")));
- }, "ToBigInt: unbox object with internal slot => Symbol => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- [Symbol.toPrimitive]: function() {
- return Symbol("1");
- }
- });
- }, "ToBigInt: @@toPrimitive => Symbol => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- valueOf: function() {
- return Symbol("1");
- }
- });
- }, "ToBigInt: valueOf => Symbol => TypeError");
- assert.throws(TypeError, function() {
- BigInt.asIntN(0, {
- toString: function() {
- return Symbol("1");
- }
- });
- }, "ToBigInt: toString => Symbol => TypeError");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, "a");
- }, "ToBigInt: unparseable BigInt");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, "0b2");
- }, "ToBigInt: unparseable BigInt binary");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, Object("0b2"));
- }, "ToBigInt: unbox object with internal slot => unparseable BigInt binary");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, {
- [Symbol.toPrimitive]: function() {
- return "0b2";
- }
- });
- }, "ToBigInt: @@toPrimitive => unparseable BigInt binary");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, {
- valueOf: function() {
- return "0b2";
- }
- });
- }, "ToBigInt: valueOf => unparseable BigInt binary");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, {
- toString: function() {
- return "0b2";
- }
- });
- }, "ToBigInt: toString => unparseable BigInt binary");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, " 0b2 ");
- }, "ToBigInt: unparseable BigInt with leading/trailing whitespace");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, "0o8");
- }, "ToBigInt: unparseable BigInt octal");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, "0xg");
- }, "ToBigInt: unparseable BigInt hex");
- assert.throws(SyntaxError, function() {
- BigInt.asIntN(0, "1n");
- }, "ToBigInt: unparseable BigInt due to literal suffix");
|