tor-browser

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

bigint-sub-32.js (2563B)


      1 const tests = [
      2  [-0x80000000n, -2n, -0x7ffffffen],
      3  [-0x7fffffffn, -2n, -0x7ffffffdn],
      4  [-0x7ffffffen, -2n, -0x7ffffffcn],
      5  [-2n, -2n, 0n],
      6  [-1n, -2n, 1n],
      7  [0n, -2n, 2n],
      8  [1n, -2n, 3n],
      9  [2n, -2n, 4n],
     10  [-0x80000000n, -1n, -0x7fffffffn],
     11  [-0x7fffffffn, -1n, -0x7ffffffen],
     12  [-0x7ffffffen, -1n, -0x7ffffffdn],
     13  [-2n, -1n, -1n],
     14  [-1n, -1n, 0n],
     15  [0n, -1n, 1n],
     16  [1n, -1n, 2n],
     17  [2n, -1n, 3n],
     18  [0x7ffffffen, -1n, 0x7fffffffn],
     19  [-0x80000000n, 0n, -0x80000000n],
     20  [-0x7fffffffn, 0n, -0x7fffffffn],
     21  [-0x7ffffffen, 0n, -0x7ffffffen],
     22  [-2n, 0n, -2n],
     23  [-1n, 0n, -1n],
     24  [0n, 0n, 0n],
     25  [1n, 0n, 1n],
     26  [2n, 0n, 2n],
     27  [0x7ffffffen, 0n, 0x7ffffffen],
     28  [0x7fffffffn, 0n, 0x7fffffffn],
     29  [-0x7fffffffn, 1n, -0x80000000n],
     30  [-0x7ffffffen, 1n, -0x7fffffffn],
     31  [-2n, 1n, -3n],
     32  [-1n, 1n, -2n],
     33  [0n, 1n, -1n],
     34  [1n, 1n, 0n],
     35  [2n, 1n, 1n],
     36  [0x7ffffffen, 1n, 0x7ffffffdn],
     37  [0x7fffffffn, 1n, 0x7ffffffen],
     38  [-0x7ffffffen, 2n, -0x80000000n],
     39  [-2n, 2n, -4n],
     40  [-1n, 2n, -3n],
     41  [0n, 2n, -2n],
     42  [1n, 2n, -1n],
     43  [2n, 2n, 0n],
     44  [0x7ffffffen, 2n, 0x7ffffffcn],
     45  [0x7fffffffn, 2n, 0x7ffffffdn],
     46  [-2n, 0x7ffffffen, -0x80000000n],
     47  [-1n, 0x7ffffffen, -0x7fffffffn],
     48  [0n, 0x7ffffffen, -0x7ffffffen],
     49  [1n, 0x7ffffffen, -0x7ffffffdn],
     50  [2n, 0x7ffffffen, -0x7ffffffcn],
     51  [0x7ffffffen, 0x7ffffffen, 0n],
     52  [0x7fffffffn, 0x7ffffffen, 1n],
     53  [-1n, 0x7fffffffn, -0x80000000n],
     54  [0n, 0x7fffffffn, -0x7fffffffn],
     55  [1n, 0x7fffffffn, -0x7ffffffen],
     56  [2n, 0x7fffffffn, -0x7ffffffdn],
     57  [0x7ffffffen, 0x7fffffffn, -1n],
     58  [0x7fffffffn, 0x7fffffffn, 0n],
     59  [-0x80000000n, -0x80000000n, 0n],
     60  [-0x7fffffffn, -0x80000000n, 1n],
     61  [-0x7ffffffen, -0x80000000n, 2n],
     62  [-2n, -0x80000000n, 0x7ffffffen],
     63  [-1n, -0x80000000n, 0x7fffffffn],
     64  [-0x80000000n, -0x7fffffffn, -1n],
     65  [-0x7fffffffn, -0x7fffffffn, 0n],
     66  [-0x7ffffffen, -0x7fffffffn, 1n],
     67  [-2n, -0x7fffffffn, 0x7ffffffdn],
     68  [-1n, -0x7fffffffn, 0x7ffffffen],
     69  [0n, -0x7fffffffn, 0x7fffffffn],
     70  [-0x80000000n, -0x7ffffffen, -2n],
     71  [-0x7fffffffn, -0x7ffffffen, -1n],
     72  [-0x7ffffffen, -0x7ffffffen, 0n],
     73  [-2n, -0x7ffffffen, 0x7ffffffcn],
     74  [-1n, -0x7ffffffen, 0x7ffffffdn],
     75  [0n, -0x7ffffffen, 0x7ffffffen],
     76  [1n, -0x7ffffffen, 0x7fffffffn],
     77 ];
     78 
     79 function f(tests) {
     80  for (let test of tests) {
     81    let lhs = test[0], rhs = test[1], expected = test[2];
     82    assertEq(BigInt.asIntN(32, lhs), lhs);
     83    assertEq(BigInt.asIntN(32, rhs), rhs);
     84    assertEq(BigInt.asIntN(32, expected), expected);
     85 
     86    assertEq(lhs - rhs, expected);
     87  }
     88 }
     89 
     90 for (let i = 0; i < 10; ++i) {
     91  f(tests);
     92 }