tor-browser

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

precision.js (2379B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Intl')||!Intl.hasOwnProperty("DurationFormat"))
      2 
      3 var df = new Intl.DurationFormat("en", {
      4  seconds: "numeric",
      5  fractionalDigits: 9,
      6 });
      7 
      8 //   10_000_000 + (1 / 10^9)
      9 // = 10000000.000000001
     10 var duration = {
     11  seconds: 10_000_000,
     12  nanoseconds: 1,
     13 };
     14 assertEq(df.format(duration), "10000000.000000001");
     15 
     16 // Number.MAX_SAFE_INTEGER = 9007199254740991
     17 var duration = {
     18  seconds: Number.MAX_SAFE_INTEGER,
     19 };
     20 assertEq(df.format(duration), "9007199254740991.000000000");
     21 
     22 // Number.MAX_SAFE_INTEGER * 1_000 = 9007199254740990976
     23 var duration = {
     24  milliseconds: Number.MAX_SAFE_INTEGER * 1_000,
     25 };
     26 assertEq(df.format(duration), "9007199254740990.976000000");
     27 
     28 // Number.MAX_SAFE_INTEGER * 1_000_000 = 9007199254740990951424
     29 var duration = {
     30  microseconds: Number.MAX_SAFE_INTEGER * 1_000_000,
     31 };
     32 assertEq(df.format(duration), "9007199254740990.951424000");
     33 
     34 // Number.MAX_SAFE_INTEGER * 1_000_000_000 = 9007199254740990926258176
     35 var duration = {
     36  nanoseconds: Number.MAX_SAFE_INTEGER * 1_000_000_000,
     37 };
     38 assertEq(df.format(duration), "9007199254740990.926258176");
     39 
     40 //   9007199254740991 + (9007199254740991 / 10^3) + (9007199254740991 / 10^6) + (9007199254740991 / 10^9)
     41 // = 9.016215470202185986731991 × 10^15
     42 var duration = {
     43  seconds: Number.MAX_SAFE_INTEGER,
     44  milliseconds: Number.MAX_SAFE_INTEGER,
     45  microseconds: Number.MAX_SAFE_INTEGER,
     46  nanoseconds: Number.MAX_SAFE_INTEGER,
     47 };
     48 assertThrowsInstanceOf(() => df.format(duration), RangeError);
     49 
     50 var duration = {
     51  seconds: Number.MIN_SAFE_INTEGER,
     52  milliseconds: Number.MIN_SAFE_INTEGER,
     53  microseconds: Number.MIN_SAFE_INTEGER,
     54  nanoseconds: Number.MIN_SAFE_INTEGER,
     55 };
     56 assertThrowsInstanceOf(() => df.format(duration), RangeError);
     57 
     58 //   1 + (2 / 10^3) + (3 / 10^6) + (9007199254740991 / 10^9)
     59 // = 9.007200256743991 × 10^6
     60 var duration = {
     61  seconds: 1,
     62  milliseconds: 2,
     63  microseconds: 3,
     64  nanoseconds: Number.MAX_SAFE_INTEGER,
     65 };
     66 assertEq(df.format(duration), "9007200.256743991");
     67 
     68 //   (4503599627370497024 / 10^3) + (4503599627370494951424 / 10^6)
     69 // = 4503599627370497.024 + 4503599627370494.951424
     70 // = 9007199254740991.975424
     71 var duration = {
     72  milliseconds: 4503599627370497_000,
     73  microseconds: 4503599627370495_000000,
     74 };
     75 assertEq(df.format(duration), "9007199254740991.975424000");
     76 
     77 if (typeof reportCompare === "function")
     78  reportCompare(true, true);