summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Intl/NumberFormat/formatRangeToParts-approximately-sign-compact.js
blob: dea7c406424df6ac0bac8155cf64fa952ba9811e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// |reftest| skip-if(!this.hasOwnProperty("Intl"))

if (typeof getAvailableLocalesOf === "undefined") {
  var getAvailableLocalesOf = SpecialPowers.Cu.getJSTestingFunctions().getAvailableLocalesOf;
}

const numbers = [
  0, 1, 2, 5, 10, 100, 1000, 10_000, 100_000, 1_000_000,
  0.1, 0.2, 0.5, 1.5,
  -0, -1, -2, -5,
  Infinity, -Infinity,
];

const options = {notation: "compact"};

// List of known approximately sign in CLDR 40.
const approximatelySigns = [
  "~", "∼", "≈", "≃", "ca.", "約", "dáàṣì", "dáàshì",
];

// Iterate over all locales and ensure we find exactly one approximately sign.
for (let locale of getAvailableLocalesOf("NumberFormat").sort()) {
  let nf = new Intl.NumberFormat(locale, options);
  for (let number of numbers) {
    let parts = nf.formatRangeToParts(number, number);
    let approx = parts.filter(part => part.type === "approximatelySign");

    assertEq(approx.length, 1);
    assertEq(approximatelySigns.some(approxSign => approx[0].value.includes(approxSign)), true);
  }
}

if (typeof reportCompare === "function")
  reportCompare(true, true);