tor-browser

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

bigint-xor-32.js (2068B)


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