tor-browser

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

formatRangeToParts.js (4432B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 const Start = NumberRangeFormatParts("startRange");
      4 const End = NumberRangeFormatParts("endRange");
      5 const Shared = NumberRangeFormatParts("shared");
      6 
      7 const tests = {
      8  "en": {
      9    options: {},
     10    ranges: [
     11      // Approximation sign present.
     12      {
     13        start: 0,
     14        end: 0,
     15        result: [Shared.Approx("~"), Shared.Integer("0")],
     16      },
     17      {
     18        start: -0,
     19        end: -0,
     20        result: [Shared.Approx("~"), Shared.MinusSign("-"), Shared.Integer("0")],
     21      },
     22      {
     23        start: -1,
     24        end: -1,
     25        result: [Shared.Approx("~"), Shared.MinusSign("-"), Shared.Integer("1")],
     26      },
     27      {
     28        start: 0.5,
     29        end: 0.5,
     30        result: [Shared.Approx("~"), Shared.Integer("0"), Shared.Decimal("."), Shared.Fraction("5")],
     31      },
     32      {
     33        start: Infinity,
     34        end: Infinity,
     35        result: [Shared.Approx("~"), Shared.Inf("∞")],
     36      },
     37      {
     38        start: -Infinity,
     39        end: -Infinity,
     40        result: [Shared.Approx("~"), Shared.MinusSign("-"), Shared.Inf("∞")],
     41      },
     42 
     43      // Proper ranges.
     44      {
     45        start: -2,
     46        end: -1,
     47        result: [Start.MinusSign("-"), Start.Integer("2"), Shared.Literal(" – "), End.MinusSign("-"), End.Integer("1")],
     48      },
     49      {
     50        start: -1,
     51        end: 1,
     52        result: [Start.MinusSign("-"), Start.Integer("1"), Shared.Literal(" – "), End.Integer("1")],
     53      },
     54      {
     55        start: 1,
     56        end: 2,
     57        result: [Start.Integer("1"), Shared.Literal("–"), End.Integer("2")],
     58      },
     59    ],
     60  },
     61  // Non-ASCII digits.
     62  "ar-EG": {
     63    options: {},
     64    ranges: [
     65      {
     66        start: -2,
     67        end: -1,
     68        result: [Shared.Literal("\u061C"), Shared.MinusSign("-"), Start.Integer("٢"), Shared.Literal("–"), End.Integer("١")],
     69      },
     70      {
     71        start: -1,
     72        end: -1,
     73        result: [Shared.Approx("~"), Shared.Literal("\u061C"), Shared.MinusSign("-"), Shared.Integer("١")],
     74      },
     75      {
     76        start: -1,
     77        end: 0,
     78        result: [Start.Literal("\u061C"), Start.MinusSign("-"), Start.Integer("١"), Shared.Literal(" – "), End.Integer("٠")],
     79      },
     80      {
     81        start: 0,
     82        end: 0,
     83        result: [Shared.Approx("~"), Shared.Integer("٠")],
     84      },
     85      {
     86        start: 0,
     87        end: 1,
     88        result: [Start.Integer("٠"), Shared.Literal("–"), End.Integer("١")],
     89      },
     90      {
     91        start: 1,
     92        end: 1,
     93        result: [Shared.Approx("~"), Shared.Integer("١")],
     94      },
     95      {
     96        start: 1,
     97        end: 2,
     98        result: [Start.Integer("١"), Shared.Literal("–"), End.Integer("٢")],
     99      },
    100    ],
    101  },
    102  "th-u-nu-thai": {
    103    options: {},
    104    ranges: [
    105      {
    106        start: -2,
    107        end: -1,
    108        result: [Start.MinusSign("-"), Start.Integer("๒"), Shared.Literal(" - "), End.MinusSign("-"), End.Integer("๑")],
    109      },
    110      {
    111        start: -1,
    112        end: -1,
    113        result: [Shared.Approx("~"), Shared.MinusSign("-"), Shared.Integer("๑")],
    114      },
    115      {
    116        start: -1,
    117        end: 0,
    118        result: [Start.MinusSign("-"), Start.Integer("๑"), Shared.Literal(" - "), End.Integer("๐")],
    119      },
    120      {
    121        start: 0,
    122        end: 0,
    123        result: [Shared.Approx("~"), Shared.Integer("๐")],
    124      },
    125      {
    126        start: 0,
    127        end: 1,
    128        result: [Start.Integer("๐"), Shared.Literal("-"), End.Integer("๑")],
    129      },
    130      {
    131        start: 1,
    132        end: 1,
    133        result: [Shared.Approx("~"), Shared.Integer("๑")],
    134      },
    135      {
    136        start: 1,
    137        end: 2,
    138        result: [Start.Integer("๑"), Shared.Literal("-"), End.Integer("๒")],
    139      },
    140    ],
    141  },
    142  // Approximation sign may consist of multiple characters.
    143  "no": {
    144    options: {},
    145    ranges: [
    146      {
    147        start: 1,
    148        end: 1,
    149        result: [Shared.Approx("ca."), Shared.Integer("1")],
    150      },
    151    ],
    152  },
    153  // Approximation sign can be a word.
    154  "ja": {
    155    options: {},
    156    ranges: [
    157      {
    158        start: 1,
    159        end: 1,
    160        result: [Shared.Approx("約"), Shared.Integer("1")],
    161      },
    162    ],
    163  },
    164 };
    165 
    166 for (let [locale, {options, ranges}] of Object.entries(tests)) {
    167  let nf = new Intl.NumberFormat(locale, options);
    168  for (let {start, end, result} of ranges) {
    169    assertRangeParts(nf, start, end, result);
    170  }
    171 }
    172 
    173 if (typeof reportCompare === "function")
    174  reportCompare(true, true);