tor-browser

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

parseInt-double-truncate.js (927B)


      1 // Test some double-truncation edge cases with parseInt(double).
      2 
      3 function testPos1() {
      4    with({}) {}
      5    var fun = d => parseInt(d);
      6    for (var i = 0; i < 2000; i++) {
      7        assertEq(fun(i + 0.5), i);
      8    }
      9    assertEq(fun(0xf_ffff_ffff) + 345, 68719477080);
     10 }
     11 testPos1();
     12 
     13 function testPos2() {
     14    with({}) {}
     15    var fun = d => parseInt(d);
     16    for (var i = 0; i < 2000; i++) {
     17        assertEq(fun(i + 0.5), i);
     18    }
     19    assertEq(fun(0x8000_0000) + 345, 2147483993);
     20 }
     21 testPos2();
     22 
     23 function testNeg1() {
     24    with({}) {}
     25    var fun = d => parseInt(d);
     26    for (var i = 0; i < 2000; i++) {
     27        assertEq(fun(i + 0.5), i);
     28    }
     29    assertEq(fun(-0xf_ffff_ffff) - 345, -68719477080);
     30 }
     31 testNeg1();
     32 
     33 function testNeg2() {
     34    with({}) {}
     35    var fun = d => parseInt(d);
     36    for (var i = 0; i < 2000; i++) {
     37        assertEq(fun(i + 0.5), i);
     38    }
     39    assertEq(fun(-0x8000_0001) - 345, -2147483994);
     40 }
     41 testNeg2();