tor-browser

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

bigint-unary.js (2060B)


      1 var xs = [
      2  // Definitely heap digits.
      3  -(2n ** 1000n),
      4 
      5  // -(2n**64n)
      6  -18446744073709551617n,
      7  -18446744073709551616n,
      8  -18446744073709551615n,
      9 
     10  // -(2n**63n)
     11  -9223372036854775809n,
     12  -9223372036854775808n,
     13  -9223372036854775807n,
     14 
     15  // -(2**32)
     16  -4294967297n,
     17  -4294967296n,
     18  -4294967295n,
     19 
     20  // -(2**31)
     21  -2147483649n,
     22  -2147483648n,
     23  -2147483647n,
     24 
     25  -1n,
     26  0n,
     27  1n,
     28 
     29  // 2**31
     30  2147483647n,
     31  2147483648n,
     32  2147483649n,
     33 
     34  // 2**32
     35  4294967295n,
     36  4294967296n,
     37  4294967297n,
     38 
     39  // 2n**63n
     40  9223372036854775807n,
     41  9223372036854775808n,
     42  9223372036854775809n,
     43 
     44  // 2n**64n
     45  18446744073709551615n,
     46  18446744073709551616n,
     47  18446744073709551617n,
     48 
     49  // Definitely heap digits.
     50  2n ** 1000n,
     51 ];
     52 
     53 function testNeg() {
     54  for (var i = 0; i < 100; ++i) {
     55    var j = i % xs.length;
     56    var x = xs[j];
     57    var y = xs[xs.length - 1 - j];
     58 
     59    assertEq(-x, y);
     60  }
     61 }
     62 testNeg();
     63 
     64 function testBitNot() {
     65  var ys = xs.map(x => -(x + 1n));
     66 
     67  for (var i = 0; i < 100; ++i) {
     68    var j = i % xs.length;
     69    var x = xs[j];
     70    var y = ys[j];
     71 
     72    assertEq(~x, y);
     73  }
     74 }
     75 testBitNot();
     76 
     77 function testPreInc() {
     78  var ys = xs.map(x => x + 1n);
     79 
     80  for (var i = 0; i < 100; ++i) {
     81    var j = i % xs.length;
     82    var x = xs[j];
     83    var y = ys[j];
     84 
     85    var r = ++x;
     86    assertEq(x, y);
     87    assertEq(r, y);
     88  }
     89 }
     90 testPostInc();
     91 
     92 function testPostInc() {
     93  var ys = xs.map(x => x + 1n);
     94 
     95  for (var i = 0; i < 100; ++i) {
     96    var j = i % xs.length;
     97    var x = xs[j];
     98    var y = ys[j];
     99 
    100    var r = x++;
    101    assertEq(x, y);
    102    assertEq(r, xs[j]);
    103  }
    104 }
    105 testPostInc();
    106 
    107 function testPreDec() {
    108  var ys = xs.map(x => x - 1n);
    109 
    110  for (var i = 0; i < 100; ++i) {
    111    var j = i % xs.length;
    112    var x = xs[j];
    113    var y = ys[j];
    114 
    115    var r = --x;
    116    assertEq(x, y);
    117    assertEq(r, y);
    118  }
    119 }
    120 testPostDec();
    121 
    122 function testPostDec() {
    123  var ys = xs.map(x => x - 1n);
    124 
    125  for (var i = 0; i < 100; ++i) {
    126    var j = i % xs.length;
    127    var x = xs[j];
    128    var y = ys[j];
    129 
    130    var r = x--;
    131    assertEq(x, y);
    132    assertEq(r, xs[j]);
    133  }
    134 }
    135 testPostDec();