tor-browser

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

bigint-non-primitive.js (2124B)


      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: Bitwise XOR for BigInt non-primitive values
      5 esid: sec-binary-bitwise-operators-runtime-semantics-evaluation
      6 info: |
      7  5. Let lnum be ? ToNumeric(lval).
      8  6. Let rnum be ? ToNumeric(rval).
      9  ...
     10  8. Let T be Type(lnum).
     11  ...
     12  11. Otherwise, @ is ^; return T::bitwiseXOR(lnum, rnum).
     13 
     14 features: [BigInt]
     15 ---*/
     16 assert.sameValue(
     17  Object(0b101n) ^ 0b011n,
     18  0b110n,
     19  'The result of (Object(0b101n) ^ 0b011n) is 0b110n'
     20 );
     21 
     22 assert.sameValue(
     23  0b011n ^ Object(0b101n),
     24  0b110n,
     25  'The result of (0b011n ^ Object(0b101n)) is 0b110n'
     26 );
     27 
     28 assert.sameValue(
     29  Object(0b101n) ^ Object(0b011n),
     30  0b110n,
     31  'The result of (Object(0b101n) ^ Object(0b011n)) is 0b110n'
     32 );
     33 
     34 function err() {
     35  throw new Test262Error();
     36 }
     37 
     38 assert.sameValue({
     39  [Symbol.toPrimitive]: function() {
     40    return 0b101n;
     41  },
     42 
     43  valueOf: err,
     44  toString: err
     45 } ^ 0b011n, 0b110n, 'The result of (({[Symbol.toPrimitive]: function() {return 0b101n;}, valueOf: err, toString: err}) ^ 0b011n) is 0b110n');
     46 
     47 assert.sameValue(0b011n ^ {
     48  [Symbol.toPrimitive]: function() {
     49    return 0b101n;
     50  },
     51 
     52  valueOf: err,
     53  toString: err
     54 }, 0b110n, 'The result of (0b011n ^ {[Symbol.toPrimitive]: function() {return 0b101n;}, valueOf: err, toString: err}) is 0b110n');
     55 
     56 assert.sameValue({
     57  valueOf: function() {
     58    return 0b101n;
     59  },
     60 
     61  toString: err
     62 } ^ 0b011n, 0b110n, 'The result of (({valueOf: function() {return 0b101n;}, toString: err}) ^ 0b011n) is 0b110n');
     63 
     64 assert.sameValue(0b011n ^ {
     65  valueOf: function() {
     66    return 0b101n;
     67  },
     68 
     69  toString: err
     70 }, 0b110n, 'The result of (0b011n ^ {valueOf: function() {return 0b101n;}, toString: err}) is 0b110n');
     71 
     72 assert.sameValue({
     73  toString: function() {
     74    return 0b101n;
     75  }
     76 } ^ 0b011n, 0b110n, 'The result of (({toString: function() {return 0b101n;}}) ^ 0b011n) is 0b110n');
     77 
     78 assert.sameValue(0b011n ^ {
     79  toString: function() {
     80    return 0b101n;
     81  }
     82 }, 0b110n, 'The result of (0b011n ^ {toString: function() {return 0b101n;}}) is 0b110n');
     83 
     84 reportCompare(0, 0);