tor-browser

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

bigint-xor-32-fold.js (2180B)


      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    let f = Function(`
     67      let lhs = ${lhs}n;
     68      let rhs = ${rhs}n;
     69      assertEq(lhs ^ rhs, ${expected}n);
     70      assertEq(rhs ^ lhs, ${expected}n);
     71    `);
     72 
     73    for (let j = 0; j < 100; ++j) {
     74      f();
     75    }
     76  }
     77 }
     78 
     79 f(tests);