tor-browser

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

testBitopWithConstan.js (24010B)


      1 function test1 (x) {
      2    assertEq(x | -1, -1);
      3    assertEq(-1 | x, -1);
      4    assertEq(x & -1, 1);
      5    assertEq(-1 & x, 1);
      6    assertEq(x ^ -1, -2);
      7    assertEq(-1 ^ x, -2);
      8    assertEq(x >> -1, 0);
      9    assertEq(-1 >> x, -1);
     10    assertEq(x >>> -1, 0);
     11    assertEq(-1 >>> x, 2147483647);
     12    assertEq(x << -1, -2147483648);
     13    assertEq(-1 << x, -2);
     14    assertEq(x | 1, 1);
     15    assertEq(1 | x, 1);
     16    assertEq(x & 1, 1);
     17    assertEq(1 & x, 1);
     18    assertEq(x ^ 1, 0);
     19    assertEq(1 ^ x, 0);
     20    assertEq(x >> 1, 0);
     21    assertEq(1 >> x, 0);
     22    assertEq(x >>> 1, 0);
     23    assertEq(1 >>> x, 0);
     24    assertEq(x << 1, 2);
     25    assertEq(1 << x, 2);
     26    assertEq(x | 0, 1);
     27    assertEq(0 | x, 1);
     28    assertEq(x & 0, 0);
     29    assertEq(0 & x, 0);
     30    assertEq(x ^ 0, 1);
     31    assertEq(0 ^ x, 1);
     32    assertEq(x >> 0, 1);
     33    assertEq(0 >> x, 0);
     34    assertEq(x >>> 0, 1);
     35    assertEq(0 >>> x, 0);
     36    assertEq(x << 0, 1);
     37    assertEq(0 << x, 0);
     38    assertEq(x | 0xffffffff, -1);
     39    assertEq(0xffffffff | x, -1);
     40    assertEq(x & 0xffffffff, 1);
     41    assertEq(0xffffffff & x, 1);
     42    assertEq(x ^ 0xffffffff, -2);
     43    assertEq(0xffffffff ^ x, -2);
     44    assertEq(x >> 0xffffffff, 0);
     45    assertEq(0xffffffff >> x, -1);
     46    assertEq(x >>> 0xffffffff, 0);
     47    assertEq(0xffffffff >>> x, 2147483647);
     48    assertEq(x << 0xffffffff, -2147483648);
     49    assertEq(0xffffffff << x, -2);
     50    assertEq(x | "10.6", 11);
     51    assertEq("10.6" | x, 11);
     52    assertEq(x & "10.6", 0);
     53    assertEq("10.6" & x, 0);
     54    assertEq(x ^ "10.6", 11);
     55    assertEq("10.6" ^ x, 11);
     56    assertEq(x >> "10.6", 0);
     57    assertEq("10.6" >> x, 5);
     58    assertEq(x >>> "10.6", 0);
     59    assertEq("10.6" >>> x, 5);
     60    assertEq(x << "10.6", 1024);
     61    assertEq("10.6" << x, 20);
     62    assertEq(x | 2147483648, -2147483647);
     63    assertEq(2147483648 | x, -2147483647);
     64    assertEq(x & 2147483648, 0);
     65    assertEq(2147483648 & x, 0);
     66    assertEq(x ^ 2147483648, -2147483647);
     67    assertEq(2147483648 ^ x, -2147483647);
     68    assertEq(x >> 2147483648, 1);
     69    assertEq(2147483648 >> x, -1073741824);
     70    assertEq(x >>> 2147483648, 1);
     71    assertEq(2147483648 >>> x, 1073741824);
     72    assertEq(x << 2147483648, 1);
     73    assertEq(2147483648 << x, 0);
     74    assertEq(x | 4294967296, 1);
     75    assertEq(4294967296 | x, 1);
     76    assertEq(x & 4294967296, 0);
     77    assertEq(4294967296 & x, 0);
     78    assertEq(x ^ 4294967296, 1);
     79    assertEq(4294967296 ^ x, 1);
     80    assertEq(x >> 4294967296, 1);
     81    assertEq(4294967296 >> x, 0);
     82    assertEq(x >>> 4294967296, 1);
     83    assertEq(4294967296 >>> x, 0);
     84    assertEq(x << 4294967296, 1);
     85    assertEq(4294967296 << x, 0);
     86    assertEq(x | undefined, 1);
     87    assertEq(undefined | x, 1);
     88    assertEq(x & undefined, 0);
     89    assertEq(undefined & x, 0);
     90    assertEq(x ^ undefined, 1);
     91    assertEq(undefined ^ x, 1);
     92    assertEq(x >> undefined, 1);
     93    assertEq(undefined >> x, 0);
     94    assertEq(x >>> undefined, 1);
     95    assertEq(undefined >>> x, 0);
     96    assertEq(x << undefined, 1);
     97    assertEq(undefined << x, 0);
     98    assertEq(x | null, 1);
     99    assertEq(null | x, 1);
    100    assertEq(x & null, 0);
    101    assertEq(null & x, 0);
    102    assertEq(x ^ null, 1);
    103    assertEq(null ^ x, 1);
    104    assertEq(x >> null, 1);
    105    assertEq(null >> x, 0);
    106    assertEq(x >>> null, 1);
    107    assertEq(null >>> x, 0);
    108    assertEq(x << null, 1);
    109    assertEq(null << x, 0);
    110    assertEq(x | false, 1);
    111    assertEq(false | x, 1);
    112    assertEq(x & false, 0);
    113    assertEq(false & x, 0);
    114    assertEq(x ^ false, 1);
    115    assertEq(false ^ x, 1);
    116    assertEq(x >> false, 1);
    117    assertEq(false >> x, 0);
    118    assertEq(x >>> false, 1);
    119    assertEq(false >>> x, 0);
    120    assertEq(x << false, 1);
    121    assertEq(false << x, 0);
    122    assertEq(x | true, 1);
    123    assertEq(true | x, 1);
    124    assertEq(x & true, 1);
    125    assertEq(true & x, 1);
    126    assertEq(x ^ true, 0);
    127    assertEq(true ^ x, 0);
    128    assertEq(x >> true, 0);
    129    assertEq(true >> x, 0);
    130    assertEq(x >>> true, 0);
    131    assertEq(true >>> x, 0);
    132    assertEq(x << true, 2);
    133    assertEq(true << x, 2);
    134    assertEq(x | -1.5, -1);
    135    assertEq(-1.5 | x, -1);
    136    assertEq(x & -1.5, 1);
    137    assertEq(-1.5 & x, 1);
    138    assertEq(x ^ -1.5, -2);
    139    assertEq(-1.5 ^ x, -2);
    140    assertEq(x >> -1.5, 0);
    141    assertEq(-1.5 >> x, -1);
    142    assertEq(x >>> -1.5, 0);
    143    assertEq(-1.5 >>> x, 2147483647);
    144    assertEq(x << -1.5, -2147483648);
    145    assertEq(-1.5 << x, -2);
    146 }
    147 test1(1)
    148 
    149 function test2 (x) {
    150    assertEq(x | -1, -1);
    151    assertEq(-1 | x, -1);
    152    assertEq(x & -1, 0);
    153    assertEq(-1 & x, 0);
    154    assertEq(x ^ -1, -1);
    155    assertEq(-1 ^ x, -1);
    156    assertEq(x >> -1, 0);
    157    assertEq(-1 >> x, -1);
    158    assertEq(x >>> -1, 0);
    159    assertEq(-1 >>> x, 4294967295);
    160    assertEq(x << -1, 0);
    161    assertEq(-1 << x, -1);
    162    assertEq(x | 1, 1);
    163    assertEq(1 | x, 1);
    164    assertEq(x & 1, 0);
    165    assertEq(1 & x, 0);
    166    assertEq(x ^ 1, 1);
    167    assertEq(1 ^ x, 1);
    168    assertEq(x >> 1, 0);
    169    assertEq(1 >> x, 1);
    170    assertEq(x >>> 1, 0);
    171    assertEq(1 >>> x, 1);
    172    assertEq(x << 1, 0);
    173    assertEq(1 << x, 1);
    174    assertEq(x | 0, 0);
    175    assertEq(0 | x, 0);
    176    assertEq(x & 0, 0);
    177    assertEq(0 & x, 0);
    178    assertEq(x ^ 0, 0);
    179    assertEq(0 ^ x, 0);
    180    assertEq(x >> 0, 0);
    181    assertEq(0 >> x, 0);
    182    assertEq(x >>> 0, 0);
    183    assertEq(0 >>> x, 0);
    184    assertEq(x << 0, 0);
    185    assertEq(0 << x, 0);
    186    assertEq(x | 0xffffffff, -1);
    187    assertEq(0xffffffff | x, -1);
    188    assertEq(x & 0xffffffff, 0);
    189    assertEq(0xffffffff & x, 0);
    190    assertEq(x ^ 0xffffffff, -1);
    191    assertEq(0xffffffff ^ x, -1);
    192    assertEq(x >> 0xffffffff, 0);
    193    assertEq(0xffffffff >> x, -1);
    194    assertEq(x >>> 0xffffffff, 0);
    195    assertEq(0xffffffff >>> x, 4294967295);
    196    assertEq(x << 0xffffffff, 0);
    197    assertEq(0xffffffff << x, -1);
    198    assertEq(x | "10.6", 10);
    199    assertEq("10.6" | x, 10);
    200    assertEq(x & "10.6", 0);
    201    assertEq("10.6" & x, 0);
    202    assertEq(x ^ "10.6", 10);
    203    assertEq("10.6" ^ x, 10);
    204    assertEq(x >> "10.6", 0);
    205    assertEq("10.6" >> x, 10);
    206    assertEq(x >>> "10.6", 0);
    207    assertEq("10.6" >>> x, 10);
    208    assertEq(x << "10.6", 0);
    209    assertEq("10.6" << x, 10);
    210    assertEq(x | 2147483648, -2147483648);
    211    assertEq(2147483648 | x, -2147483648);
    212    assertEq(x & 2147483648, 0);
    213    assertEq(2147483648 & x, 0);
    214    assertEq(x ^ 2147483648, -2147483648);
    215    assertEq(2147483648 ^ x, -2147483648);
    216    assertEq(x >> 2147483648, 0);
    217    assertEq(2147483648 >> x, -2147483648);
    218    assertEq(x >>> 2147483648, 0);
    219    assertEq(2147483648 >>> x, 2147483648);
    220    assertEq(x << 2147483648, 0);
    221    assertEq(2147483648 << x, -2147483648);
    222    assertEq(x | 4294967296, 0);
    223    assertEq(4294967296 | x, 0);
    224    assertEq(x & 4294967296, 0);
    225    assertEq(4294967296 & x, 0);
    226    assertEq(x ^ 4294967296, 0);
    227    assertEq(4294967296 ^ x, 0);
    228    assertEq(x >> 4294967296, 0);
    229    assertEq(4294967296 >> x, 0);
    230    assertEq(x >>> 4294967296, 0);
    231    assertEq(4294967296 >>> x, 0);
    232    assertEq(x << 4294967296, 0);
    233    assertEq(4294967296 << x, 0);
    234    assertEq(x | undefined, 0);
    235    assertEq(undefined | x, 0);
    236    assertEq(x & undefined, 0);
    237    assertEq(undefined & x, 0);
    238    assertEq(x ^ undefined, 0);
    239    assertEq(undefined ^ x, 0);
    240    assertEq(x >> undefined, 0);
    241    assertEq(undefined >> x, 0);
    242    assertEq(x >>> undefined, 0);
    243    assertEq(undefined >>> x, 0);
    244    assertEq(x << undefined, 0);
    245    assertEq(undefined << x, 0);
    246    assertEq(x | null, 0);
    247    assertEq(null | x, 0);
    248    assertEq(x & null, 0);
    249    assertEq(null & x, 0);
    250    assertEq(x ^ null, 0);
    251    assertEq(null ^ x, 0);
    252    assertEq(x >> null, 0);
    253    assertEq(null >> x, 0);
    254    assertEq(x >>> null, 0);
    255    assertEq(null >>> x, 0);
    256    assertEq(x << null, 0);
    257    assertEq(null << x, 0);
    258    assertEq(x | false, 0);
    259    assertEq(false | x, 0);
    260    assertEq(x & false, 0);
    261    assertEq(false & x, 0);
    262    assertEq(x ^ false, 0);
    263    assertEq(false ^ x, 0);
    264    assertEq(x >> false, 0);
    265    assertEq(false >> x, 0);
    266    assertEq(x >>> false, 0);
    267    assertEq(false >>> x, 0);
    268    assertEq(x << false, 0);
    269    assertEq(false << x, 0);
    270    assertEq(x | true, 1);
    271    assertEq(true | x, 1);
    272    assertEq(x & true, 0);
    273    assertEq(true & x, 0);
    274    assertEq(x ^ true, 1);
    275    assertEq(true ^ x, 1);
    276    assertEq(x >> true, 0);
    277    assertEq(true >> x, 1);
    278    assertEq(x >>> true, 0);
    279    assertEq(true >>> x, 1);
    280    assertEq(x << true, 0);
    281    assertEq(true << x, 1);
    282    assertEq(x | -1.5, -1);
    283    assertEq(-1.5 | x, -1);
    284    assertEq(x & -1.5, 0);
    285    assertEq(-1.5 & x, 0);
    286    assertEq(x ^ -1.5, -1);
    287    assertEq(-1.5 ^ x, -1);
    288    assertEq(x >> -1.5, 0);
    289    assertEq(-1.5 >> x, -1);
    290    assertEq(x >>> -1.5, 0);
    291    assertEq(-1.5 >>> x, 4294967295);
    292    assertEq(x << -1.5, 0);
    293    assertEq(-1.5 << x, -1);
    294 }
    295 test2(0)
    296 
    297 function test3 (x) {
    298    assertEq(x | -1, -1);
    299    assertEq(-1 | x, -1);
    300    assertEq(x & -1, -1);
    301    assertEq(-1 & x, -1);
    302    assertEq(x ^ -1, 0);
    303    assertEq(-1 ^ x, 0);
    304    assertEq(x >> -1, -1);
    305    assertEq(-1 >> x, -1);
    306    assertEq(x >>> -1, 1);
    307    assertEq(-1 >>> x, 1);
    308    assertEq(x << -1, -2147483648);
    309    assertEq(-1 << x, -2147483648);
    310    assertEq(x | 1, -1);
    311    assertEq(1 | x, -1);
    312    assertEq(x & 1, 1);
    313    assertEq(1 & x, 1);
    314    assertEq(x ^ 1, -2);
    315    assertEq(1 ^ x, -2);
    316    assertEq(x >> 1, -1);
    317    assertEq(1 >> x, 0);
    318    assertEq(x >>> 1, 2147483647);
    319    assertEq(1 >>> x, 0);
    320    assertEq(x << 1, -2);
    321    assertEq(1 << x, -2147483648);
    322    assertEq(x | 0, -1);
    323    assertEq(0 | x, -1);
    324    assertEq(x & 0, 0);
    325    assertEq(0 & x, 0);
    326    assertEq(x ^ 0, -1);
    327    assertEq(0 ^ x, -1);
    328    assertEq(x >> 0, -1);
    329    assertEq(0 >> x, 0);
    330    assertEq(x >>> 0, 4294967295);
    331    assertEq(0 >>> x, 0);
    332    assertEq(x << 0, -1);
    333    assertEq(0 << x, 0);
    334    assertEq(x | 0xffffffff, -1);
    335    assertEq(0xffffffff | x, -1);
    336    assertEq(x & 0xffffffff, -1);
    337    assertEq(0xffffffff & x, -1);
    338    assertEq(x ^ 0xffffffff, 0);
    339    assertEq(0xffffffff ^ x, 0);
    340    assertEq(x >> 0xffffffff, -1);
    341    assertEq(0xffffffff >> x, -1);
    342    assertEq(x >>> 0xffffffff, 1);
    343    assertEq(0xffffffff >>> x, 1);
    344    assertEq(x << 0xffffffff, -2147483648);
    345    assertEq(0xffffffff << x, -2147483648);
    346    assertEq(x | "10.6", -1);
    347    assertEq("10.6" | x, -1);
    348    assertEq(x & "10.6", 10);
    349    assertEq("10.6" & x, 10);
    350    assertEq(x ^ "10.6", -11);
    351    assertEq("10.6" ^ x, -11);
    352    assertEq(x >> "10.6", -1);
    353    assertEq("10.6" >> x, 0);
    354    assertEq(x >>> "10.6", 4194303);
    355    assertEq("10.6" >>> x, 0);
    356    assertEq(x << "10.6", -1024);
    357    assertEq("10.6" << x, 0);
    358    assertEq(x | 2147483648, -1);
    359    assertEq(2147483648 | x, -1);
    360    assertEq(x & 2147483648, -2147483648);
    361    assertEq(2147483648 & x, -2147483648);
    362    assertEq(x ^ 2147483648, 2147483647);
    363    assertEq(2147483648 ^ x, 2147483647);
    364    assertEq(x >> 2147483648, -1);
    365    assertEq(2147483648 >> x, -1);
    366    assertEq(x >>> 2147483648, 4294967295);
    367    assertEq(2147483648 >>> x, 1);
    368    assertEq(x << 2147483648, -1);
    369    assertEq(2147483648 << x, 0);
    370    assertEq(x | 4294967296, -1);
    371    assertEq(4294967296 | x, -1);
    372    assertEq(x & 4294967296, 0);
    373    assertEq(4294967296 & x, 0);
    374    assertEq(x ^ 4294967296, -1);
    375    assertEq(4294967296 ^ x, -1);
    376    assertEq(x >> 4294967296, -1);
    377    assertEq(4294967296 >> x, 0);
    378    assertEq(x >>> 4294967296, 4294967295);
    379    assertEq(4294967296 >>> x, 0);
    380    assertEq(x << 4294967296, -1);
    381    assertEq(4294967296 << x, 0);
    382    assertEq(x | undefined, -1);
    383    assertEq(undefined | x, -1);
    384    assertEq(x & undefined, 0);
    385    assertEq(undefined & x, 0);
    386    assertEq(x ^ undefined, -1);
    387    assertEq(undefined ^ x, -1);
    388    assertEq(x >> undefined, -1);
    389    assertEq(undefined >> x, 0);
    390    assertEq(x >>> undefined, 4294967295);
    391    assertEq(undefined >>> x, 0);
    392    assertEq(x << undefined, -1);
    393    assertEq(undefined << x, 0);
    394    assertEq(x | null, -1);
    395    assertEq(null | x, -1);
    396    assertEq(x & null, 0);
    397    assertEq(null & x, 0);
    398    assertEq(x ^ null, -1);
    399    assertEq(null ^ x, -1);
    400    assertEq(x >> null, -1);
    401    assertEq(null >> x, 0);
    402    assertEq(x >>> null, 4294967295);
    403    assertEq(null >>> x, 0);
    404    assertEq(x << null, -1);
    405    assertEq(null << x, 0);
    406    assertEq(x | false, -1);
    407    assertEq(false | x, -1);
    408    assertEq(x & false, 0);
    409    assertEq(false & x, 0);
    410    assertEq(x ^ false, -1);
    411    assertEq(false ^ x, -1);
    412    assertEq(x >> false, -1);
    413    assertEq(false >> x, 0);
    414    assertEq(x >>> false, 4294967295);
    415    assertEq(false >>> x, 0);
    416    assertEq(x << false, -1);
    417    assertEq(false << x, 0);
    418    assertEq(x | true, -1);
    419    assertEq(true | x, -1);
    420    assertEq(x & true, 1);
    421    assertEq(true & x, 1);
    422    assertEq(x ^ true, -2);
    423    assertEq(true ^ x, -2);
    424    assertEq(x >> true, -1);
    425    assertEq(true >> x, 0);
    426    assertEq(x >>> true, 2147483647);
    427    assertEq(true >>> x, 0);
    428    assertEq(x << true, -2);
    429    assertEq(true << x, -2147483648);
    430    assertEq(x | -1.5, -1);
    431    assertEq(-1.5 | x, -1);
    432    assertEq(x & -1.5, -1);
    433    assertEq(-1.5 & x, -1);
    434    assertEq(x ^ -1.5, 0);
    435    assertEq(-1.5 ^ x, 0);
    436    assertEq(x >> -1.5, -1);
    437    assertEq(-1.5 >> x, -1);
    438    assertEq(x >>> -1.5, 1);
    439    assertEq(-1.5 >>> x, 1);
    440    assertEq(x << -1.5, -2147483648);
    441    assertEq(-1.5 << x, -2147483648);
    442 }
    443 test3(-1)
    444 
    445 function test4 (x) {
    446    assertEq(x | -1, -1);
    447    assertEq(-1 | x, -1);
    448    assertEq(x & -1, -2147483648);
    449    assertEq(-1 & x, -2147483648);
    450    assertEq(x ^ -1, 2147483647);
    451    assertEq(-1 ^ x, 2147483647);
    452    assertEq(x >> -1, -1);
    453    assertEq(-1 >> x, -1);
    454    assertEq(x >>> -1, 1);
    455    assertEq(-1 >>> x, 4294967295);
    456    assertEq(x << -1, 0);
    457    assertEq(-1 << x, -1);
    458    assertEq(x | 1, -2147483647);
    459    assertEq(1 | x, -2147483647);
    460    assertEq(x & 1, 0);
    461    assertEq(1 & x, 0);
    462    assertEq(x ^ 1, -2147483647);
    463    assertEq(1 ^ x, -2147483647);
    464    assertEq(x >> 1, -1073741824);
    465    assertEq(1 >> x, 1);
    466    assertEq(x >>> 1, 1073741824);
    467    assertEq(1 >>> x, 1);
    468    assertEq(x << 1, 0);
    469    assertEq(1 << x, 1);
    470    assertEq(x | 0, -2147483648);
    471    assertEq(0 | x, -2147483648);
    472    assertEq(x & 0, 0);
    473    assertEq(0 & x, 0);
    474    assertEq(x ^ 0, -2147483648);
    475    assertEq(0 ^ x, -2147483648);
    476    assertEq(x >> 0, -2147483648);
    477    assertEq(0 >> x, 0);
    478    assertEq(x >>> 0, 2147483648);
    479    assertEq(0 >>> x, 0);
    480    assertEq(x << 0, -2147483648);
    481    assertEq(0 << x, 0);
    482    assertEq(x | 0xffffffff, -1);
    483    assertEq(0xffffffff | x, -1);
    484    assertEq(x & 0xffffffff, -2147483648);
    485    assertEq(0xffffffff & x, -2147483648);
    486    assertEq(x ^ 0xffffffff, 2147483647);
    487    assertEq(0xffffffff ^ x, 2147483647);
    488    assertEq(x >> 0xffffffff, -1);
    489    assertEq(0xffffffff >> x, -1);
    490    assertEq(x >>> 0xffffffff, 1);
    491    assertEq(0xffffffff >>> x, 4294967295);
    492    assertEq(x << 0xffffffff, 0);
    493    assertEq(0xffffffff << x, -1);
    494    assertEq(x | "10.6", -2147483638);
    495    assertEq("10.6" | x, -2147483638);
    496    assertEq(x & "10.6", 0);
    497    assertEq("10.6" & x, 0);
    498    assertEq(x ^ "10.6", -2147483638);
    499    assertEq("10.6" ^ x, -2147483638);
    500    assertEq(x >> "10.6", -2097152);
    501    assertEq("10.6" >> x, 10);
    502    assertEq(x >>> "10.6", 2097152);
    503    assertEq("10.6" >>> x, 10);
    504    assertEq(x << "10.6", 0);
    505    assertEq("10.6" << x, 10);
    506    assertEq(x | 2147483648, -2147483648);
    507    assertEq(2147483648 | x, -2147483648);
    508    assertEq(x & 2147483648, -2147483648);
    509    assertEq(2147483648 & x, -2147483648);
    510    assertEq(x ^ 2147483648, 0);
    511    assertEq(2147483648 ^ x, 0);
    512    assertEq(x >> 2147483648, -2147483648);
    513    assertEq(2147483648 >> x, -2147483648);
    514    assertEq(x >>> 2147483648, 2147483648);
    515    assertEq(2147483648 >>> x, 2147483648);
    516    assertEq(x << 2147483648, -2147483648);
    517    assertEq(2147483648 << x, -2147483648);
    518    assertEq(x | 4294967296, -2147483648);
    519    assertEq(4294967296 | x, -2147483648);
    520    assertEq(x & 4294967296, 0);
    521    assertEq(4294967296 & x, 0);
    522    assertEq(x ^ 4294967296, -2147483648);
    523    assertEq(4294967296 ^ x, -2147483648);
    524    assertEq(x >> 4294967296, -2147483648);
    525    assertEq(4294967296 >> x, 0);
    526    assertEq(x >>> 4294967296, 2147483648);
    527    assertEq(4294967296 >>> x, 0);
    528    assertEq(x << 4294967296, -2147483648);
    529    assertEq(4294967296 << x, 0);
    530    assertEq(x | undefined, -2147483648);
    531    assertEq(undefined | x, -2147483648);
    532    assertEq(x & undefined, 0);
    533    assertEq(undefined & x, 0);
    534    assertEq(x ^ undefined, -2147483648);
    535    assertEq(undefined ^ x, -2147483648);
    536    assertEq(x >> undefined, -2147483648);
    537    assertEq(undefined >> x, 0);
    538    assertEq(x >>> undefined, 2147483648);
    539    assertEq(undefined >>> x, 0);
    540    assertEq(x << undefined, -2147483648);
    541    assertEq(undefined << x, 0);
    542    assertEq(x | null, -2147483648);
    543    assertEq(null | x, -2147483648);
    544    assertEq(x & null, 0);
    545    assertEq(null & x, 0);
    546    assertEq(x ^ null, -2147483648);
    547    assertEq(null ^ x, -2147483648);
    548    assertEq(x >> null, -2147483648);
    549    assertEq(null >> x, 0);
    550    assertEq(x >>> null, 2147483648);
    551    assertEq(null >>> x, 0);
    552    assertEq(x << null, -2147483648);
    553    assertEq(null << x, 0);
    554    assertEq(x | false, -2147483648);
    555    assertEq(false | x, -2147483648);
    556    assertEq(x & false, 0);
    557    assertEq(false & x, 0);
    558    assertEq(x ^ false, -2147483648);
    559    assertEq(false ^ x, -2147483648);
    560    assertEq(x >> false, -2147483648);
    561    assertEq(false >> x, 0);
    562    assertEq(x >>> false, 2147483648);
    563    assertEq(false >>> x, 0);
    564    assertEq(x << false, -2147483648);
    565    assertEq(false << x, 0);
    566    assertEq(x | true, -2147483647);
    567    assertEq(true | x, -2147483647);
    568    assertEq(x & true, 0);
    569    assertEq(true & x, 0);
    570    assertEq(x ^ true, -2147483647);
    571    assertEq(true ^ x, -2147483647);
    572    assertEq(x >> true, -1073741824);
    573    assertEq(true >> x, 1);
    574    assertEq(x >>> true, 1073741824);
    575    assertEq(true >>> x, 1);
    576    assertEq(x << true, 0);
    577    assertEq(true << x, 1);
    578    assertEq(x | -1.5, -1);
    579    assertEq(-1.5 | x, -1);
    580    assertEq(x & -1.5, -2147483648);
    581    assertEq(-1.5 & x, -2147483648);
    582    assertEq(x ^ -1.5, 2147483647);
    583    assertEq(-1.5 ^ x, 2147483647);
    584    assertEq(x >> -1.5, -1);
    585    assertEq(-1.5 >> x, -1);
    586    assertEq(x >>> -1.5, 1);
    587    assertEq(-1.5 >>> x, 4294967295);
    588    assertEq(x << -1.5, 0);
    589    assertEq(-1.5 << x, -1);
    590 }
    591 test4(2147483648)
    592 
    593 function test5 (x) {
    594    assertEq(x | -1, -1);
    595    assertEq(-1 | x, -1);
    596    assertEq(x & -1, -2147483648);
    597    assertEq(-1 & x, -2147483648);
    598    assertEq(x ^ -1, 2147483647);
    599    assertEq(-1 ^ x, 2147483647);
    600    assertEq(x >> -1, -1);
    601    assertEq(-1 >> x, -1);
    602    assertEq(x >>> -1, 1);
    603    assertEq(-1 >>> x, 4294967295);
    604    assertEq(x << -1, 0);
    605    assertEq(-1 << x, -1);
    606    assertEq(x | 1, -2147483647);
    607    assertEq(1 | x, -2147483647);
    608    assertEq(x & 1, 0);
    609    assertEq(1 & x, 0);
    610    assertEq(x ^ 1, -2147483647);
    611    assertEq(1 ^ x, -2147483647);
    612    assertEq(x >> 1, -1073741824);
    613    assertEq(1 >> x, 1);
    614    assertEq(x >>> 1, 1073741824);
    615    assertEq(1 >>> x, 1);
    616    assertEq(x << 1, 0);
    617    assertEq(1 << x, 1);
    618    assertEq(x | 0, -2147483648);
    619    assertEq(0 | x, -2147483648);
    620    assertEq(x & 0, 0);
    621    assertEq(0 & x, 0);
    622    assertEq(x ^ 0, -2147483648);
    623    assertEq(0 ^ x, -2147483648);
    624    assertEq(x >> 0, -2147483648);
    625    assertEq(0 >> x, 0);
    626    assertEq(x >>> 0, 2147483648);
    627    assertEq(0 >>> x, 0);
    628    assertEq(x << 0, -2147483648);
    629    assertEq(0 << x, 0);
    630    assertEq(x | 0xffffffff, -1);
    631    assertEq(0xffffffff | x, -1);
    632    assertEq(x & 0xffffffff, -2147483648);
    633    assertEq(0xffffffff & x, -2147483648);
    634    assertEq(x ^ 0xffffffff, 2147483647);
    635    assertEq(0xffffffff ^ x, 2147483647);
    636    assertEq(x >> 0xffffffff, -1);
    637    assertEq(0xffffffff >> x, -1);
    638    assertEq(x >>> 0xffffffff, 1);
    639    assertEq(0xffffffff >>> x, 4294967295);
    640    assertEq(x << 0xffffffff, 0);
    641    assertEq(0xffffffff << x, -1);
    642    assertEq(x | "10.6", -2147483638);
    643    assertEq("10.6" | x, -2147483638);
    644    assertEq(x & "10.6", 0);
    645    assertEq("10.6" & x, 0);
    646    assertEq(x ^ "10.6", -2147483638);
    647    assertEq("10.6" ^ x, -2147483638);
    648    assertEq(x >> "10.6", -2097152);
    649    assertEq("10.6" >> x, 10);
    650    assertEq(x >>> "10.6", 2097152);
    651    assertEq("10.6" >>> x, 10);
    652    assertEq(x << "10.6", 0);
    653    assertEq("10.6" << x, 10);
    654    assertEq(x | 2147483648, -2147483648);
    655    assertEq(2147483648 | x, -2147483648);
    656    assertEq(x & 2147483648, -2147483648);
    657    assertEq(2147483648 & x, -2147483648);
    658    assertEq(x ^ 2147483648, 0);
    659    assertEq(2147483648 ^ x, 0);
    660    assertEq(x >> 2147483648, -2147483648);
    661    assertEq(2147483648 >> x, -2147483648);
    662    assertEq(x >>> 2147483648, 2147483648);
    663    assertEq(2147483648 >>> x, 2147483648);
    664    assertEq(x << 2147483648, -2147483648);
    665    assertEq(2147483648 << x, -2147483648);
    666    assertEq(x | 4294967296, -2147483648);
    667    assertEq(4294967296 | x, -2147483648);
    668    assertEq(x & 4294967296, 0);
    669    assertEq(4294967296 & x, 0);
    670    assertEq(x ^ 4294967296, -2147483648);
    671    assertEq(4294967296 ^ x, -2147483648);
    672    assertEq(x >> 4294967296, -2147483648);
    673    assertEq(4294967296 >> x, 0);
    674    assertEq(x >>> 4294967296, 2147483648);
    675    assertEq(4294967296 >>> x, 0);
    676    assertEq(x << 4294967296, -2147483648);
    677    assertEq(4294967296 << x, 0);
    678    assertEq(x | undefined, -2147483648);
    679    assertEq(undefined | x, -2147483648);
    680    assertEq(x & undefined, 0);
    681    assertEq(undefined & x, 0);
    682    assertEq(x ^ undefined, -2147483648);
    683    assertEq(undefined ^ x, -2147483648);
    684    assertEq(x >> undefined, -2147483648);
    685    assertEq(undefined >> x, 0);
    686    assertEq(x >>> undefined, 2147483648);
    687    assertEq(undefined >>> x, 0);
    688    assertEq(x << undefined, -2147483648);
    689    assertEq(undefined << x, 0);
    690    assertEq(x | null, -2147483648);
    691    assertEq(null | x, -2147483648);
    692    assertEq(x & null, 0);
    693    assertEq(null & x, 0);
    694    assertEq(x ^ null, -2147483648);
    695    assertEq(null ^ x, -2147483648);
    696    assertEq(x >> null, -2147483648);
    697    assertEq(null >> x, 0);
    698    assertEq(x >>> null, 2147483648);
    699    assertEq(null >>> x, 0);
    700    assertEq(x << null, -2147483648);
    701    assertEq(null << x, 0);
    702    assertEq(x | false, -2147483648);
    703    assertEq(false | x, -2147483648);
    704    assertEq(x & false, 0);
    705    assertEq(false & x, 0);
    706    assertEq(x ^ false, -2147483648);
    707    assertEq(false ^ x, -2147483648);
    708    assertEq(x >> false, -2147483648);
    709    assertEq(false >> x, 0);
    710    assertEq(x >>> false, 2147483648);
    711    assertEq(false >>> x, 0);
    712    assertEq(x << false, -2147483648);
    713    assertEq(false << x, 0);
    714    assertEq(x | true, -2147483647);
    715    assertEq(true | x, -2147483647);
    716    assertEq(x & true, 0);
    717    assertEq(true & x, 0);
    718    assertEq(x ^ true, -2147483647);
    719    assertEq(true ^ x, -2147483647);
    720    assertEq(x >> true, -1073741824);
    721    assertEq(true >> x, 1);
    722    assertEq(x >>> true, 1073741824);
    723    assertEq(true >>> x, 1);
    724    assertEq(x << true, 0);
    725    assertEq(true << x, 1);
    726    assertEq(x | -1.5, -1);
    727    assertEq(-1.5 | x, -1);
    728    assertEq(x & -1.5, -2147483648);
    729    assertEq(-1.5 & x, -2147483648);
    730    assertEq(x ^ -1.5, 2147483647);
    731    assertEq(-1.5 ^ x, 2147483647);
    732    assertEq(x >> -1.5, -1);
    733    assertEq(-1.5 >> x, -1);
    734    assertEq(x >>> -1.5, 1);
    735    assertEq(-1.5 >>> x, 4294967295);
    736    assertEq(x << -1.5, 0);
    737    assertEq(-1.5 << x, -1);
    738 }
    739 test5(-2147483648)