tor-browser

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

rounding-increment.js (3054B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 // Nickel rounding.
      4 {
      5  let nf = new Intl.NumberFormat("en", {
      6    minimumFractionDigits: 2,
      7    maximumFractionDigits: 2,
      8    roundingIncrement: 5,
      9  });
     10 
     11  assertEq(nf.format(1.22), "1.20");
     12  assertEq(nf.format(1.224), "1.20");
     13  assertEq(nf.format(1.225), "1.25");
     14  assertEq(nf.format(1.23), "1.25");
     15 }
     16 
     17 // Dime rounding.
     18 {
     19  let nf = new Intl.NumberFormat("en", {
     20    minimumFractionDigits: 2,
     21    maximumFractionDigits: 2,
     22    roundingIncrement: 10,
     23  });
     24 
     25  assertEq(nf.format(1.24), "1.20");
     26  assertEq(nf.format(1.249), "1.20");
     27  assertEq(nf.format(1.250), "1.30");
     28  assertEq(nf.format(1.25), "1.30");
     29 }
     30 
     31 // Rounding increment option is rounded down.
     32 {
     33  let nf1 = new Intl.NumberFormat("en", {
     34    minimumFractionDigits: 0,
     35    maximumFractionDigits: 0,
     36    roundingIncrement: 10,
     37  });
     38 
     39  let nf2 = new Intl.NumberFormat("en", {
     40    minimumFractionDigits: 0,
     41    maximumFractionDigits: 0,
     42    roundingIncrement: 10.1,
     43  });
     44 
     45  let nf3 = new Intl.NumberFormat("en", {
     46    minimumFractionDigits: 0,
     47    maximumFractionDigits: 0,
     48    roundingIncrement: 10.9,
     49  });
     50 
     51  assertEq(nf1.resolvedOptions().roundingIncrement, 10);
     52  assertEq(nf2.resolvedOptions().roundingIncrement, 10);
     53  assertEq(nf3.resolvedOptions().roundingIncrement, 10);
     54 
     55  assertEq(nf1.format(123), "120");
     56  assertEq(nf2.format(123), "120");
     57  assertEq(nf3.format(123), "120");
     58 }
     59 
     60 // |minimumFractionDigits| must be equal to |maximumFractionDigits| when
     61 // |roundingIncrement| is used.
     62 //
     63 // |minimumFractionDigits| defaults to zero.
     64 {
     65  let nf = new Intl.NumberFormat("en", {
     66    roundingIncrement: 10,
     67    // minimumFractionDigits: 0, (default)
     68    maximumFractionDigits: 0,
     69  });
     70 
     71  let resolved = nf.resolvedOptions();
     72  assertEq(resolved.minimumFractionDigits, 0);
     73  assertEq(resolved.maximumFractionDigits, 0);
     74  assertEq(resolved.roundingIncrement, 10);
     75 
     76  assertEq(nf.format(123), "120");
     77  assertEq(nf.format(123.456), "120");
     78 }
     79 
     80 // |maximumFractionDigitsDefault| is set to |minimumFractionDigitsDefault| when
     81 // roundingIncrement isn't equal to 1.
     82 {
     83  let options = {
     84    roundingIncrement: 10,
     85    // minimumFractionDigits: 0, (default)
     86    // maximumFractionDigits: 0, (default)
     87  };
     88  let nf = new Intl.NumberFormat("en", options);
     89  assertEq(nf.resolvedOptions().minimumFractionDigits, 0);
     90  assertEq(nf.resolvedOptions().maximumFractionDigits, 0);
     91 }
     92 
     93 // |maximumFractionDigits| must be equal to |minimumFractionDigits| when
     94 // roundingIncrement isn't equal to 1.
     95 {
     96  let options = {
     97    roundingIncrement: 10,
     98    // minimumFractionDigits: 0, (default)
     99    maximumFractionDigits: 1,
    100  };
    101  assertThrowsInstanceOf(() => new Intl.NumberFormat("en", options), RangeError);
    102 }
    103 
    104 // Invalid values.
    105 for (let roundingIncrement of [-1, 0, Infinity, NaN]){
    106  let options = {
    107    roundingIncrement,
    108    minimumFractionDigits: 0,
    109    maximumFractionDigits: 0,
    110  };
    111  assertThrowsInstanceOf(() => new Intl.NumberFormat("en", options), RangeError);
    112 }
    113 
    114 if (typeof reportCompare === "function")
    115  reportCompare(true, true);