tor-browser

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

StringBuilder.js (1705B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 // The implementation of the format function uses the C++ StringBuilder class,
      7 // which changes its storage model at 32 characters, and uses it in a way which
      8 // also means that there's no room for null-termination at this limit.
      9 // This test makes sure that none of this affects the output.
     10 
     11 var format = new Intl.NumberFormat("it-IT", {minimumFractionDigits: 1});
     12 
     13 assertEq(format.format(1123123123123123123123.1), "1.123.123.123.123.123.100.000,0");
     14 assertEq(format.format(12123123123123123123123.1), "12.123.123.123.123.122.000.000,0");
     15 assertEq(format.format(123123123123123123123123.1), "123.123.123.123.123.120.000.000,0");
     16 
     17 // Ensure the ICU output matches Number.prototype.toFixed.
     18 function formatToFixed(x) {
     19    var mfd = format.resolvedOptions().maximumFractionDigits;
     20    var s = x.toFixed(mfd);
     21 
     22    // To keep it simple we assume |s| is always in exponential form.
     23    var m = s.match(/^(\d)\.(\d+)e\+(\d+)$/);
     24    assertEq(m !== null, true);
     25    s = m[1] + m[2].padEnd(m[3], "0");
     26 
     27    // Group digits and append fractional part.
     28    m = s.match(/\d{1,3}(?=(?:\d{3})*$)/g);
     29    assertEq(m !== null, true);
     30    return m.join(".") + ",0";
     31 }
     32 
     33 assertEq(formatToFixed(1123123123123123123123.1), "1.123.123.123.123.123.100.000,0");
     34 assertEq(formatToFixed(12123123123123123123123.1), "12.123.123.123.123.122.000.000,0");
     35 assertEq(formatToFixed(123123123123123123123123.1), "123.123.123.123.123.120.000.000,0");
     36 
     37 reportCompare(0, 0, "ok");