tor-browser

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

asIntN.js (12731B)


      1 const tests = [
      2  [-0x10000000000000001n, 0, 0n],
      3  [-0x10000000000000000n, 0, 0n],
      4  [-0xffffffffffffffffn, 0, 0n],
      5  [-0xfffffffffffffffen, 0, 0n],
      6  [-0x8000000000000001n, 0, 0n],
      7  [-0x8000000000000000n, 0, 0n],
      8  [-0x7fffffffffffffffn, 0, 0n],
      9  [-0x7ffffffffffffffen, 0, 0n],
     10  [-0x100000001n, 0, 0n],
     11  [-0x100000000n, 0, 0n],
     12  [-0xffffffffn, 0, 0n],
     13  [-0xfffffffen, 0, 0n],
     14  [-0x80000001n, 0, 0n],
     15  [-0x80000000n, 0, 0n],
     16  [-0x7fffffffn, 0, 0n],
     17  [-0x7ffffffen, 0, 0n],
     18  [-9n, 0, 0n],
     19  [-8n, 0, 0n],
     20  [-7n, 0, 0n],
     21  [-6n, 0, 0n],
     22  [-5n, 0, 0n],
     23  [-4n, 0, 0n],
     24  [-3n, 0, 0n],
     25  [-2n, 0, 0n],
     26  [-1n, 0, 0n],
     27  [0n, 0, 0n],
     28  [1n, 0, 0n],
     29  [2n, 0, 0n],
     30  [3n, 0, 0n],
     31  [4n, 0, 0n],
     32  [5n, 0, 0n],
     33  [6n, 0, 0n],
     34  [7n, 0, 0n],
     35  [8n, 0, 0n],
     36  [9n, 0, 0n],
     37  [0x7ffffffen, 0, 0n],
     38  [0x7fffffffn, 0, 0n],
     39  [0x80000000n, 0, 0n],
     40  [0x80000001n, 0, 0n],
     41  [0xfffffffen, 0, 0n],
     42  [0xffffffffn, 0, 0n],
     43  [0x100000000n, 0, 0n],
     44  [0x100000001n, 0, 0n],
     45  [0x7ffffffffffffffen, 0, 0n],
     46  [0x7fffffffffffffffn, 0, 0n],
     47  [0x8000000000000000n, 0, 0n],
     48  [0x8000000000000001n, 0, 0n],
     49  [0xfffffffffffffffen, 0, 0n],
     50  [0xffffffffffffffffn, 0, 0n],
     51  [0x10000000000000000n, 0, 0n],
     52  [0x10000000000000001n, 0, 0n],
     53  [-0x10000000000000001n, 1, -1n],
     54  [-0x10000000000000000n, 1, 0n],
     55  [-0xffffffffffffffffn, 1, -1n],
     56  [-0xfffffffffffffffen, 1, 0n],
     57  [-0x8000000000000001n, 1, -1n],
     58  [-0x8000000000000000n, 1, 0n],
     59  [-0x7fffffffffffffffn, 1, -1n],
     60  [-0x7ffffffffffffffen, 1, 0n],
     61  [-0x100000001n, 1, -1n],
     62  [-0x100000000n, 1, 0n],
     63  [-0xffffffffn, 1, -1n],
     64  [-0xfffffffen, 1, 0n],
     65  [-0x80000001n, 1, -1n],
     66  [-0x80000000n, 1, 0n],
     67  [-0x7fffffffn, 1, -1n],
     68  [-0x7ffffffen, 1, 0n],
     69  [-9n, 1, -1n],
     70  [-8n, 1, 0n],
     71  [-7n, 1, -1n],
     72  [-6n, 1, 0n],
     73  [-5n, 1, -1n],
     74  [-4n, 1, 0n],
     75  [-3n, 1, -1n],
     76  [-2n, 1, 0n],
     77  [-1n, 1, -1n],
     78  [0n, 1, 0n],
     79  [1n, 1, -1n],
     80  [2n, 1, 0n],
     81  [3n, 1, -1n],
     82  [4n, 1, 0n],
     83  [5n, 1, -1n],
     84  [6n, 1, 0n],
     85  [7n, 1, -1n],
     86  [8n, 1, 0n],
     87  [9n, 1, -1n],
     88  [0x7ffffffen, 1, 0n],
     89  [0x7fffffffn, 1, -1n],
     90  [0x80000000n, 1, 0n],
     91  [0x80000001n, 1, -1n],
     92  [0xfffffffen, 1, 0n],
     93  [0xffffffffn, 1, -1n],
     94  [0x100000000n, 1, 0n],
     95  [0x100000001n, 1, -1n],
     96  [0x7ffffffffffffffen, 1, 0n],
     97  [0x7fffffffffffffffn, 1, -1n],
     98  [0x8000000000000000n, 1, 0n],
     99  [0x8000000000000001n, 1, -1n],
    100  [0xfffffffffffffffen, 1, 0n],
    101  [0xffffffffffffffffn, 1, -1n],
    102  [0x10000000000000000n, 1, 0n],
    103  [0x10000000000000001n, 1, -1n],
    104  [-0x10000000000000001n, 2, -1n],
    105  [-0x10000000000000000n, 2, 0n],
    106  [-0xffffffffffffffffn, 2, 1n],
    107  [-0xfffffffffffffffen, 2, -2n],
    108  [-0x8000000000000001n, 2, -1n],
    109  [-0x8000000000000000n, 2, 0n],
    110  [-0x7fffffffffffffffn, 2, 1n],
    111  [-0x7ffffffffffffffen, 2, -2n],
    112  [-0x100000001n, 2, -1n],
    113  [-0x100000000n, 2, 0n],
    114  [-0xffffffffn, 2, 1n],
    115  [-0xfffffffen, 2, -2n],
    116  [-0x80000001n, 2, -1n],
    117  [-0x80000000n, 2, 0n],
    118  [-0x7fffffffn, 2, 1n],
    119  [-0x7ffffffen, 2, -2n],
    120  [-9n, 2, -1n],
    121  [-8n, 2, 0n],
    122  [-7n, 2, 1n],
    123  [-6n, 2, -2n],
    124  [-5n, 2, -1n],
    125  [-4n, 2, 0n],
    126  [-3n, 2, 1n],
    127  [-2n, 2, -2n],
    128  [-1n, 2, -1n],
    129  [0n, 2, 0n],
    130  [1n, 2, 1n],
    131  [2n, 2, -2n],
    132  [3n, 2, -1n],
    133  [4n, 2, 0n],
    134  [5n, 2, 1n],
    135  [6n, 2, -2n],
    136  [7n, 2, -1n],
    137  [8n, 2, 0n],
    138  [9n, 2, 1n],
    139  [0x7ffffffen, 2, -2n],
    140  [0x7fffffffn, 2, -1n],
    141  [0x80000000n, 2, 0n],
    142  [0x80000001n, 2, 1n],
    143  [0xfffffffen, 2, -2n],
    144  [0xffffffffn, 2, -1n],
    145  [0x100000000n, 2, 0n],
    146  [0x100000001n, 2, 1n],
    147  [0x7ffffffffffffffen, 2, -2n],
    148  [0x7fffffffffffffffn, 2, -1n],
    149  [0x8000000000000000n, 2, 0n],
    150  [0x8000000000000001n, 2, 1n],
    151  [0xfffffffffffffffen, 2, -2n],
    152  [0xffffffffffffffffn, 2, -1n],
    153  [0x10000000000000000n, 2, 0n],
    154  [0x10000000000000001n, 2, 1n],
    155  [-0x10000000000000001n, 31, -1n],
    156  [-0x10000000000000000n, 31, 0n],
    157  [-0xffffffffffffffffn, 31, 1n],
    158  [-0xfffffffffffffffen, 31, 2n],
    159  [-0x8000000000000001n, 31, -1n],
    160  [-0x8000000000000000n, 31, 0n],
    161  [-0x7fffffffffffffffn, 31, 1n],
    162  [-0x7ffffffffffffffen, 31, 2n],
    163  [-0x100000001n, 31, -1n],
    164  [-0x100000000n, 31, 0n],
    165  [-0xffffffffn, 31, 1n],
    166  [-0xfffffffen, 31, 2n],
    167  [-0x80000001n, 31, -1n],
    168  [-0x80000000n, 31, 0n],
    169  [-0x7fffffffn, 31, 1n],
    170  [-0x7ffffffen, 31, 2n],
    171  [-9n, 31, -9n],
    172  [-8n, 31, -8n],
    173  [-7n, 31, -7n],
    174  [-6n, 31, -6n],
    175  [-5n, 31, -5n],
    176  [-4n, 31, -4n],
    177  [-3n, 31, -3n],
    178  [-2n, 31, -2n],
    179  [-1n, 31, -1n],
    180  [0n, 31, 0n],
    181  [1n, 31, 1n],
    182  [2n, 31, 2n],
    183  [3n, 31, 3n],
    184  [4n, 31, 4n],
    185  [5n, 31, 5n],
    186  [6n, 31, 6n],
    187  [7n, 31, 7n],
    188  [8n, 31, 8n],
    189  [9n, 31, 9n],
    190  [0x7ffffffen, 31, -2n],
    191  [0x7fffffffn, 31, -1n],
    192  [0x80000000n, 31, 0n],
    193  [0x80000001n, 31, 1n],
    194  [0xfffffffen, 31, -2n],
    195  [0xffffffffn, 31, -1n],
    196  [0x100000000n, 31, 0n],
    197  [0x100000001n, 31, 1n],
    198  [0x7ffffffffffffffen, 31, -2n],
    199  [0x7fffffffffffffffn, 31, -1n],
    200  [0x8000000000000000n, 31, 0n],
    201  [0x8000000000000001n, 31, 1n],
    202  [0xfffffffffffffffen, 31, -2n],
    203  [0xffffffffffffffffn, 31, -1n],
    204  [0x10000000000000000n, 31, 0n],
    205  [0x10000000000000001n, 31, 1n],
    206  [-0x10000000000000001n, 32, -1n],
    207  [-0x10000000000000000n, 32, 0n],
    208  [-0xffffffffffffffffn, 32, 1n],
    209  [-0xfffffffffffffffen, 32, 2n],
    210  [-0x8000000000000001n, 32, -1n],
    211  [-0x8000000000000000n, 32, 0n],
    212  [-0x7fffffffffffffffn, 32, 1n],
    213  [-0x7ffffffffffffffen, 32, 2n],
    214  [-0x100000001n, 32, -1n],
    215  [-0x100000000n, 32, 0n],
    216  [-0xffffffffn, 32, 1n],
    217  [-0xfffffffen, 32, 2n],
    218  [-0x80000001n, 32, 0x7fffffffn],
    219  [-0x80000000n, 32, -0x80000000n],
    220  [-0x7fffffffn, 32, -0x7fffffffn],
    221  [-0x7ffffffen, 32, -0x7ffffffen],
    222  [-9n, 32, -9n],
    223  [-8n, 32, -8n],
    224  [-7n, 32, -7n],
    225  [-6n, 32, -6n],
    226  [-5n, 32, -5n],
    227  [-4n, 32, -4n],
    228  [-3n, 32, -3n],
    229  [-2n, 32, -2n],
    230  [-1n, 32, -1n],
    231  [0n, 32, 0n],
    232  [1n, 32, 1n],
    233  [2n, 32, 2n],
    234  [3n, 32, 3n],
    235  [4n, 32, 4n],
    236  [5n, 32, 5n],
    237  [6n, 32, 6n],
    238  [7n, 32, 7n],
    239  [8n, 32, 8n],
    240  [9n, 32, 9n],
    241  [0x7ffffffen, 32, 0x7ffffffen],
    242  [0x7fffffffn, 32, 0x7fffffffn],
    243  [0x80000000n, 32, -0x80000000n],
    244  [0x80000001n, 32, -0x7fffffffn],
    245  [0xfffffffen, 32, -2n],
    246  [0xffffffffn, 32, -1n],
    247  [0x100000000n, 32, 0n],
    248  [0x100000001n, 32, 1n],
    249  [0x7ffffffffffffffen, 32, -2n],
    250  [0x7fffffffffffffffn, 32, -1n],
    251  [0x8000000000000000n, 32, 0n],
    252  [0x8000000000000001n, 32, 1n],
    253  [0xfffffffffffffffen, 32, -2n],
    254  [0xffffffffffffffffn, 32, -1n],
    255  [0x10000000000000000n, 32, 0n],
    256  [0x10000000000000001n, 32, 1n],
    257  [-0x10000000000000001n, 33, -1n],
    258  [-0x10000000000000000n, 33, 0n],
    259  [-0xffffffffffffffffn, 33, 1n],
    260  [-0xfffffffffffffffen, 33, 2n],
    261  [-0x8000000000000001n, 33, -1n],
    262  [-0x8000000000000000n, 33, 0n],
    263  [-0x7fffffffffffffffn, 33, 1n],
    264  [-0x7ffffffffffffffen, 33, 2n],
    265  [-0x100000001n, 33, 0xffffffffn],
    266  [-0x100000000n, 33, -0x100000000n],
    267  [-0xffffffffn, 33, -0xffffffffn],
    268  [-0xfffffffen, 33, -0xfffffffen],
    269  [-0x80000001n, 33, -0x80000001n],
    270  [-0x80000000n, 33, -0x80000000n],
    271  [-0x7fffffffn, 33, -0x7fffffffn],
    272  [-0x7ffffffen, 33, -0x7ffffffen],
    273  [-9n, 33, -9n],
    274  [-8n, 33, -8n],
    275  [-7n, 33, -7n],
    276  [-6n, 33, -6n],
    277  [-5n, 33, -5n],
    278  [-4n, 33, -4n],
    279  [-3n, 33, -3n],
    280  [-2n, 33, -2n],
    281  [-1n, 33, -1n],
    282  [0n, 33, 0n],
    283  [1n, 33, 1n],
    284  [2n, 33, 2n],
    285  [3n, 33, 3n],
    286  [4n, 33, 4n],
    287  [5n, 33, 5n],
    288  [6n, 33, 6n],
    289  [7n, 33, 7n],
    290  [8n, 33, 8n],
    291  [9n, 33, 9n],
    292  [0x7ffffffen, 33, 0x7ffffffen],
    293  [0x7fffffffn, 33, 0x7fffffffn],
    294  [0x80000000n, 33, 0x80000000n],
    295  [0x80000001n, 33, 0x80000001n],
    296  [0xfffffffen, 33, 0xfffffffen],
    297  [0xffffffffn, 33, 0xffffffffn],
    298  [0x100000000n, 33, -0x100000000n],
    299  [0x100000001n, 33, -0xffffffffn],
    300  [0x7ffffffffffffffen, 33, -2n],
    301  [0x7fffffffffffffffn, 33, -1n],
    302  [0x8000000000000000n, 33, 0n],
    303  [0x8000000000000001n, 33, 1n],
    304  [0xfffffffffffffffen, 33, -2n],
    305  [0xffffffffffffffffn, 33, -1n],
    306  [0x10000000000000000n, 33, 0n],
    307  [0x10000000000000001n, 33, 1n],
    308  [-0x10000000000000001n, 63, -1n],
    309  [-0x10000000000000000n, 63, 0n],
    310  [-0xffffffffffffffffn, 63, 1n],
    311  [-0xfffffffffffffffen, 63, 2n],
    312  [-0x8000000000000001n, 63, -1n],
    313  [-0x8000000000000000n, 63, 0n],
    314  [-0x7fffffffffffffffn, 63, 1n],
    315  [-0x7ffffffffffffffen, 63, 2n],
    316  [-0x100000001n, 63, -0x100000001n],
    317  [-0x100000000n, 63, -0x100000000n],
    318  [-0xffffffffn, 63, -0xffffffffn],
    319  [-0xfffffffen, 63, -0xfffffffen],
    320  [-0x80000001n, 63, -0x80000001n],
    321  [-0x80000000n, 63, -0x80000000n],
    322  [-0x7fffffffn, 63, -0x7fffffffn],
    323  [-0x7ffffffen, 63, -0x7ffffffen],
    324  [-9n, 63, -9n],
    325  [-8n, 63, -8n],
    326  [-7n, 63, -7n],
    327  [-6n, 63, -6n],
    328  [-5n, 63, -5n],
    329  [-4n, 63, -4n],
    330  [-3n, 63, -3n],
    331  [-2n, 63, -2n],
    332  [-1n, 63, -1n],
    333  [0n, 63, 0n],
    334  [1n, 63, 1n],
    335  [2n, 63, 2n],
    336  [3n, 63, 3n],
    337  [4n, 63, 4n],
    338  [5n, 63, 5n],
    339  [6n, 63, 6n],
    340  [7n, 63, 7n],
    341  [8n, 63, 8n],
    342  [9n, 63, 9n],
    343  [0x7ffffffen, 63, 0x7ffffffen],
    344  [0x7fffffffn, 63, 0x7fffffffn],
    345  [0x80000000n, 63, 0x80000000n],
    346  [0x80000001n, 63, 0x80000001n],
    347  [0xfffffffen, 63, 0xfffffffen],
    348  [0xffffffffn, 63, 0xffffffffn],
    349  [0x100000000n, 63, 0x100000000n],
    350  [0x100000001n, 63, 0x100000001n],
    351  [0x7ffffffffffffffen, 63, -2n],
    352  [0x7fffffffffffffffn, 63, -1n],
    353  [0x8000000000000000n, 63, 0n],
    354  [0x8000000000000001n, 63, 1n],
    355  [0xfffffffffffffffen, 63, -2n],
    356  [0xffffffffffffffffn, 63, -1n],
    357  [0x10000000000000000n, 63, 0n],
    358  [0x10000000000000001n, 63, 1n],
    359  [-0x10000000000000001n, 64, -1n],
    360  [-0x10000000000000000n, 64, 0n],
    361  [-0xffffffffffffffffn, 64, 1n],
    362  [-0xfffffffffffffffen, 64, 2n],
    363  [-0x8000000000000001n, 64, 0x7fffffffffffffffn],
    364  [-0x8000000000000000n, 64, -0x8000000000000000n],
    365  [-0x7fffffffffffffffn, 64, -0x7fffffffffffffffn],
    366  [-0x7ffffffffffffffen, 64, -0x7ffffffffffffffen],
    367  [-0x100000001n, 64, -0x100000001n],
    368  [-0x100000000n, 64, -0x100000000n],
    369  [-0xffffffffn, 64, -0xffffffffn],
    370  [-0xfffffffen, 64, -0xfffffffen],
    371  [-0x80000001n, 64, -0x80000001n],
    372  [-0x80000000n, 64, -0x80000000n],
    373  [-0x7fffffffn, 64, -0x7fffffffn],
    374  [-0x7ffffffen, 64, -0x7ffffffen],
    375  [-9n, 64, -9n],
    376  [-8n, 64, -8n],
    377  [-7n, 64, -7n],
    378  [-6n, 64, -6n],
    379  [-5n, 64, -5n],
    380  [-4n, 64, -4n],
    381  [-3n, 64, -3n],
    382  [-2n, 64, -2n],
    383  [-1n, 64, -1n],
    384  [0n, 64, 0n],
    385  [1n, 64, 1n],
    386  [2n, 64, 2n],
    387  [3n, 64, 3n],
    388  [4n, 64, 4n],
    389  [5n, 64, 5n],
    390  [6n, 64, 6n],
    391  [7n, 64, 7n],
    392  [8n, 64, 8n],
    393  [9n, 64, 9n],
    394  [0x7ffffffen, 64, 0x7ffffffen],
    395  [0x7fffffffn, 64, 0x7fffffffn],
    396  [0x80000000n, 64, 0x80000000n],
    397  [0x80000001n, 64, 0x80000001n],
    398  [0xfffffffen, 64, 0xfffffffen],
    399  [0xffffffffn, 64, 0xffffffffn],
    400  [0x100000000n, 64, 0x100000000n],
    401  [0x100000001n, 64, 0x100000001n],
    402  [0x7ffffffffffffffen, 64, 0x7ffffffffffffffen],
    403  [0x7fffffffffffffffn, 64, 0x7fffffffffffffffn],
    404  [0x8000000000000000n, 64, -0x8000000000000000n],
    405  [0x8000000000000001n, 64, -0x7fffffffffffffffn],
    406  [0xfffffffffffffffen, 64, -2n],
    407  [0xffffffffffffffffn, 64, -1n],
    408  [0x10000000000000000n, 64, 0n],
    409  [0x10000000000000001n, 64, 1n],
    410  [-0x10000000000000001n, 65, 0xffffffffffffffffn],
    411  [-0x10000000000000000n, 65, -0x10000000000000000n],
    412  [-0xffffffffffffffffn, 65, -0xffffffffffffffffn],
    413  [-0xfffffffffffffffen, 65, -0xfffffffffffffffen],
    414  [-0x8000000000000001n, 65, -0x8000000000000001n],
    415  [-0x8000000000000000n, 65, -0x8000000000000000n],
    416  [-0x7fffffffffffffffn, 65, -0x7fffffffffffffffn],
    417  [-0x7ffffffffffffffen, 65, -0x7ffffffffffffffen],
    418  [-0x100000001n, 65, -0x100000001n],
    419  [-0x100000000n, 65, -0x100000000n],
    420  [-0xffffffffn, 65, -0xffffffffn],
    421  [-0xfffffffen, 65, -0xfffffffen],
    422  [-0x80000001n, 65, -0x80000001n],
    423  [-0x80000000n, 65, -0x80000000n],
    424  [-0x7fffffffn, 65, -0x7fffffffn],
    425  [-0x7ffffffen, 65, -0x7ffffffen],
    426  [-9n, 65, -9n],
    427  [-8n, 65, -8n],
    428  [-7n, 65, -7n],
    429  [-6n, 65, -6n],
    430  [-5n, 65, -5n],
    431  [-4n, 65, -4n],
    432  [-3n, 65, -3n],
    433  [-2n, 65, -2n],
    434  [-1n, 65, -1n],
    435  [0n, 65, 0n],
    436  [1n, 65, 1n],
    437  [2n, 65, 2n],
    438  [3n, 65, 3n],
    439  [4n, 65, 4n],
    440  [5n, 65, 5n],
    441  [6n, 65, 6n],
    442  [7n, 65, 7n],
    443  [8n, 65, 8n],
    444  [9n, 65, 9n],
    445  [0x7ffffffen, 65, 0x7ffffffen],
    446  [0x7fffffffn, 65, 0x7fffffffn],
    447  [0x80000000n, 65, 0x80000000n],
    448  [0x80000001n, 65, 0x80000001n],
    449  [0xfffffffen, 65, 0xfffffffen],
    450  [0xffffffffn, 65, 0xffffffffn],
    451  [0x100000000n, 65, 0x100000000n],
    452  [0x100000001n, 65, 0x100000001n],
    453  [0x7ffffffffffffffen, 65, 0x7ffffffffffffffen],
    454  [0x7fffffffffffffffn, 65, 0x7fffffffffffffffn],
    455  [0x8000000000000000n, 65, 0x8000000000000000n],
    456  [0x8000000000000001n, 65, 0x8000000000000001n],
    457  [0xfffffffffffffffen, 65, 0xfffffffffffffffen],
    458  [0xffffffffffffffffn, 65, 0xffffffffffffffffn],
    459  [0x10000000000000000n, 65, -0x10000000000000000n],
    460  [0x10000000000000001n, 65, -0xffffffffffffffffn],
    461 ];
    462 
    463 function f(tests) {
    464  for (let test of tests) {
    465    let input = test[0], bits = test[1], expected = test[2];
    466 
    467    assertEq(BigInt.asIntN(bits, input), expected);
    468  }
    469 }
    470 
    471 for (let i = 0; i < 10; ++i) {
    472  f(tests);
    473 }