tor-browser

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

bigint-rsh-32.js (6578B)


      1 const tests = [
      2  [-0x80000000n, 0n, -0x80000000n],
      3  [-0x7fffffffn, 0n, -0x7fffffffn],
      4  [-0x7ffffffen, 0n, -0x7ffffffen],
      5  [-9n, 0n, -9n],
      6  [-8n, 0n, -8n],
      7  [-7n, 0n, -7n],
      8  [-6n, 0n, -6n],
      9  [-5n, 0n, -5n],
     10  [-4n, 0n, -4n],
     11  [-3n, 0n, -3n],
     12  [-2n, 0n, -2n],
     13  [-1n, 0n, -1n],
     14  [0n, 0n, 0n],
     15  [1n, 0n, 1n],
     16  [2n, 0n, 2n],
     17  [3n, 0n, 3n],
     18  [4n, 0n, 4n],
     19  [5n, 0n, 5n],
     20  [6n, 0n, 6n],
     21  [7n, 0n, 7n],
     22  [8n, 0n, 8n],
     23  [9n, 0n, 9n],
     24  [0x7ffffffen, 0n, 0x7ffffffen],
     25  [0x7fffffffn, 0n, 0x7fffffffn],
     26  [-0x80000000n, 1n, -0x40000000n],
     27  [-0x7fffffffn, 1n, -0x40000000n],
     28  [-0x7ffffffen, 1n, -0x3fffffffn],
     29  [-9n, 1n, -5n],
     30  [-8n, 1n, -4n],
     31  [-7n, 1n, -4n],
     32  [-6n, 1n, -3n],
     33  [-5n, 1n, -3n],
     34  [-4n, 1n, -2n],
     35  [-3n, 1n, -2n],
     36  [-2n, 1n, -1n],
     37  [-1n, 1n, -1n],
     38  [0n, 1n, 0n],
     39  [1n, 1n, 0n],
     40  [2n, 1n, 1n],
     41  [3n, 1n, 1n],
     42  [4n, 1n, 2n],
     43  [5n, 1n, 2n],
     44  [6n, 1n, 3n],
     45  [7n, 1n, 3n],
     46  [8n, 1n, 4n],
     47  [9n, 1n, 4n],
     48  [0x7ffffffen, 1n, 0x3fffffffn],
     49  [0x7fffffffn, 1n, 0x3fffffffn],
     50  [-0x80000000n, 2n, -0x20000000n],
     51  [-0x7fffffffn, 2n, -0x20000000n],
     52  [-0x7ffffffen, 2n, -0x20000000n],
     53  [-9n, 2n, -3n],
     54  [-8n, 2n, -2n],
     55  [-7n, 2n, -2n],
     56  [-6n, 2n, -2n],
     57  [-5n, 2n, -2n],
     58  [-4n, 2n, -1n],
     59  [-3n, 2n, -1n],
     60  [-2n, 2n, -1n],
     61  [-1n, 2n, -1n],
     62  [0n, 2n, 0n],
     63  [1n, 2n, 0n],
     64  [2n, 2n, 0n],
     65  [3n, 2n, 0n],
     66  [4n, 2n, 1n],
     67  [5n, 2n, 1n],
     68  [6n, 2n, 1n],
     69  [7n, 2n, 1n],
     70  [8n, 2n, 2n],
     71  [9n, 2n, 2n],
     72  [0x7ffffffen, 2n, 0x1fffffffn],
     73  [0x7fffffffn, 2n, 0x1fffffffn],
     74  [-0x80000000n, 3n, -0x10000000n],
     75  [-0x7fffffffn, 3n, -0x10000000n],
     76  [-0x7ffffffen, 3n, -0x10000000n],
     77  [-9n, 3n, -2n],
     78  [-8n, 3n, -1n],
     79  [-7n, 3n, -1n],
     80  [-6n, 3n, -1n],
     81  [-5n, 3n, -1n],
     82  [-4n, 3n, -1n],
     83  [-3n, 3n, -1n],
     84  [-2n, 3n, -1n],
     85  [-1n, 3n, -1n],
     86  [0n, 3n, 0n],
     87  [1n, 3n, 0n],
     88  [2n, 3n, 0n],
     89  [3n, 3n, 0n],
     90  [4n, 3n, 0n],
     91  [5n, 3n, 0n],
     92  [6n, 3n, 0n],
     93  [7n, 3n, 0n],
     94  [8n, 3n, 1n],
     95  [9n, 3n, 1n],
     96  [0x7ffffffen, 3n, 0xfffffffn],
     97  [0x7fffffffn, 3n, 0xfffffffn],
     98  [-0x80000000n, 4n, -0x8000000n],
     99  [-0x7fffffffn, 4n, -0x8000000n],
    100  [-0x7ffffffen, 4n, -0x8000000n],
    101  [-9n, 4n, -1n],
    102  [-8n, 4n, -1n],
    103  [-7n, 4n, -1n],
    104  [-6n, 4n, -1n],
    105  [-5n, 4n, -1n],
    106  [-4n, 4n, -1n],
    107  [-3n, 4n, -1n],
    108  [-2n, 4n, -1n],
    109  [-1n, 4n, -1n],
    110  [0n, 4n, 0n],
    111  [1n, 4n, 0n],
    112  [2n, 4n, 0n],
    113  [3n, 4n, 0n],
    114  [4n, 4n, 0n],
    115  [5n, 4n, 0n],
    116  [6n, 4n, 0n],
    117  [7n, 4n, 0n],
    118  [8n, 4n, 0n],
    119  [9n, 4n, 0n],
    120  [0x7ffffffen, 4n, 0x7ffffffn],
    121  [0x7fffffffn, 4n, 0x7ffffffn],
    122  [-0x80000000n, 0x1fn, -1n],
    123  [-0x7fffffffn, 0x1fn, -1n],
    124  [-0x7ffffffen, 0x1fn, -1n],
    125  [-9n, 0x1fn, -1n],
    126  [-8n, 0x1fn, -1n],
    127  [-7n, 0x1fn, -1n],
    128  [-6n, 0x1fn, -1n],
    129  [-5n, 0x1fn, -1n],
    130  [-4n, 0x1fn, -1n],
    131  [-3n, 0x1fn, -1n],
    132  [-2n, 0x1fn, -1n],
    133  [-1n, 0x1fn, -1n],
    134  [0n, 0x1fn, 0n],
    135  [1n, 0x1fn, 0n],
    136  [2n, 0x1fn, 0n],
    137  [3n, 0x1fn, 0n],
    138  [4n, 0x1fn, 0n],
    139  [5n, 0x1fn, 0n],
    140  [6n, 0x1fn, 0n],
    141  [7n, 0x1fn, 0n],
    142  [8n, 0x1fn, 0n],
    143  [9n, 0x1fn, 0n],
    144  [0x7ffffffen, 0x1fn, 0n],
    145  [0x7fffffffn, 0x1fn, 0n],
    146  [-0x80000000n, 0x20n, -1n],
    147  [-0x7fffffffn, 0x20n, -1n],
    148  [-0x7ffffffen, 0x20n, -1n],
    149  [-9n, 0x20n, -1n],
    150  [-8n, 0x20n, -1n],
    151  [-7n, 0x20n, -1n],
    152  [-6n, 0x20n, -1n],
    153  [-5n, 0x20n, -1n],
    154  [-4n, 0x20n, -1n],
    155  [-3n, 0x20n, -1n],
    156  [-2n, 0x20n, -1n],
    157  [-1n, 0x20n, -1n],
    158  [0n, 0x20n, 0n],
    159  [1n, 0x20n, 0n],
    160  [2n, 0x20n, 0n],
    161  [3n, 0x20n, 0n],
    162  [4n, 0x20n, 0n],
    163  [5n, 0x20n, 0n],
    164  [6n, 0x20n, 0n],
    165  [7n, 0x20n, 0n],
    166  [8n, 0x20n, 0n],
    167  [9n, 0x20n, 0n],
    168  [0x7ffffffen, 0x20n, 0n],
    169  [0x7fffffffn, 0x20n, 0n],
    170  [-0x80000000n, 0x3fn, -1n],
    171  [-0x7fffffffn, 0x3fn, -1n],
    172  [-0x7ffffffen, 0x3fn, -1n],
    173  [-9n, 0x3fn, -1n],
    174  [-8n, 0x3fn, -1n],
    175  [-7n, 0x3fn, -1n],
    176  [-6n, 0x3fn, -1n],
    177  [-5n, 0x3fn, -1n],
    178  [-4n, 0x3fn, -1n],
    179  [-3n, 0x3fn, -1n],
    180  [-2n, 0x3fn, -1n],
    181  [-1n, 0x3fn, -1n],
    182  [0n, 0x3fn, 0n],
    183  [1n, 0x3fn, 0n],
    184  [2n, 0x3fn, 0n],
    185  [3n, 0x3fn, 0n],
    186  [4n, 0x3fn, 0n],
    187  [5n, 0x3fn, 0n],
    188  [6n, 0x3fn, 0n],
    189  [7n, 0x3fn, 0n],
    190  [8n, 0x3fn, 0n],
    191  [9n, 0x3fn, 0n],
    192  [0x7ffffffen, 0x3fn, 0n],
    193  [0x7fffffffn, 0x3fn, 0n],
    194  [-0x80000000n, 0x40n, -1n],
    195  [-0x7fffffffn, 0x40n, -1n],
    196  [-0x7ffffffen, 0x40n, -1n],
    197  [-9n, 0x40n, -1n],
    198  [-8n, 0x40n, -1n],
    199  [-7n, 0x40n, -1n],
    200  [-6n, 0x40n, -1n],
    201  [-5n, 0x40n, -1n],
    202  [-4n, 0x40n, -1n],
    203  [-3n, 0x40n, -1n],
    204  [-2n, 0x40n, -1n],
    205  [-1n, 0x40n, -1n],
    206  [0n, 0x40n, 0n],
    207  [1n, 0x40n, 0n],
    208  [2n, 0x40n, 0n],
    209  [3n, 0x40n, 0n],
    210  [4n, 0x40n, 0n],
    211  [5n, 0x40n, 0n],
    212  [6n, 0x40n, 0n],
    213  [7n, 0x40n, 0n],
    214  [8n, 0x40n, 0n],
    215  [9n, 0x40n, 0n],
    216  [0x7ffffffen, 0x40n, 0n],
    217  [0x7fffffffn, 0x40n, 0n],
    218  [-9n, -1n, -0x12n],
    219  [-8n, -1n, -0x10n],
    220  [-7n, -1n, -0xen],
    221  [-6n, -1n, -0xcn],
    222  [-5n, -1n, -0xan],
    223  [-4n, -1n, -8n],
    224  [-3n, -1n, -6n],
    225  [-2n, -1n, -4n],
    226  [-1n, -1n, -2n],
    227  [0n, -1n, 0n],
    228  [1n, -1n, 2n],
    229  [2n, -1n, 4n],
    230  [3n, -1n, 6n],
    231  [4n, -1n, 8n],
    232  [5n, -1n, 0xan],
    233  [6n, -1n, 0xcn],
    234  [7n, -1n, 0xen],
    235  [8n, -1n, 0x10n],
    236  [9n, -1n, 0x12n],
    237  [-9n, -2n, -0x24n],
    238  [-8n, -2n, -0x20n],
    239  [-7n, -2n, -0x1cn],
    240  [-6n, -2n, -0x18n],
    241  [-5n, -2n, -0x14n],
    242  [-4n, -2n, -0x10n],
    243  [-3n, -2n, -0xcn],
    244  [-2n, -2n, -8n],
    245  [-1n, -2n, -4n],
    246  [0n, -2n, 0n],
    247  [1n, -2n, 4n],
    248  [2n, -2n, 8n],
    249  [3n, -2n, 0xcn],
    250  [4n, -2n, 0x10n],
    251  [5n, -2n, 0x14n],
    252  [6n, -2n, 0x18n],
    253  [7n, -2n, 0x1cn],
    254  [8n, -2n, 0x20n],
    255  [9n, -2n, 0x24n],
    256  [-9n, -3n, -0x48n],
    257  [-8n, -3n, -0x40n],
    258  [-7n, -3n, -0x38n],
    259  [-6n, -3n, -0x30n],
    260  [-5n, -3n, -0x28n],
    261  [-4n, -3n, -0x20n],
    262  [-3n, -3n, -0x18n],
    263  [-2n, -3n, -0x10n],
    264  [-1n, -3n, -8n],
    265  [0n, -3n, 0n],
    266  [1n, -3n, 8n],
    267  [2n, -3n, 0x10n],
    268  [3n, -3n, 0x18n],
    269  [4n, -3n, 0x20n],
    270  [5n, -3n, 0x28n],
    271  [6n, -3n, 0x30n],
    272  [7n, -3n, 0x38n],
    273  [8n, -3n, 0x40n],
    274  [9n, -3n, 0x48n],
    275  [-9n, -4n, -0x90n],
    276  [-8n, -4n, -0x80n],
    277  [-7n, -4n, -0x70n],
    278  [-6n, -4n, -0x60n],
    279  [-5n, -4n, -0x50n],
    280  [-4n, -4n, -0x40n],
    281  [-3n, -4n, -0x30n],
    282  [-2n, -4n, -0x20n],
    283  [-1n, -4n, -0x10n],
    284  [0n, -4n, 0n],
    285  [1n, -4n, 0x10n],
    286  [2n, -4n, 0x20n],
    287  [3n, -4n, 0x30n],
    288  [4n, -4n, 0x40n],
    289  [5n, -4n, 0x50n],
    290  [6n, -4n, 0x60n],
    291  [7n, -4n, 0x70n],
    292  [8n, -4n, 0x80n],
    293  [9n, -4n, 0x90n],
    294  [-1n, -0x1fn, -0x80000000n],
    295  [0n, -0x1fn, 0n],
    296  [0n, -0x20n, 0n],
    297  [0n, -0x3fn, 0n],
    298  [0n, -0x40n, 0n],
    299 ];
    300 
    301 function f(tests) {
    302  for (let test of tests) {
    303    let lhs = test[0], rhs = test[1], expected = test[2];
    304    assertEq(BigInt.asIntN(32, lhs), lhs);
    305    assertEq(BigInt.asIntN(32, rhs), rhs);
    306    assertEq(BigInt.asIntN(32, expected), expected);
    307 
    308    assertEq(lhs >> rhs, expected);
    309  }
    310 }
    311 
    312 for (let i = 0; i < 10; ++i) {
    313  f(tests);
    314 }