tor-browser

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

formatRange-timeZoneName-matches-format.js (1290B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 // Test DateTimeFormat.prototype.format and DateTimeFormat.prototype.formatRange
      4 // use the same formatting for the "timeZoneName" option.
      5 
      6 function hours(v) {
      7  return v * 60 * 60 * 1000;
      8 }
      9 
     10 const locales = [
     11  "en", "fr", "de", "es",
     12  "ja", "th", "zh", "ar",
     13 ];
     14 
     15 const timeZones = [
     16  "UTC", "Etc/GMT-1", "Etc/GMT+1",
     17  "Africa/Cairo",
     18  "America/New_York", "America/Los_Angeles",
     19  "Asia/Riyadh", "Asia/Bangkok", "Asia/Shanghai", "Asia/Tokyo",
     20  "Europe/Berlin", "Europe/London", "Europe/Madrid", "Europe/Paris",
     21 ];
     22 
     23 const timeZoneNames = [
     24  "short", "shortOffset", "shortGeneric",
     25  "long", "longOffset", "longGeneric",
     26 ];
     27 
     28 function timeZonePart(parts) {
     29  return parts.filter(({type}) => type === "timeZoneName").map(({value}) => value)[0];
     30 }
     31 
     32 for (let locale of locales) {
     33  for (let timeZone of timeZones) {
     34    for (let timeZoneName of timeZoneNames) {
     35      let dtf = new Intl.DateTimeFormat(locale, {timeZone, timeZoneName, hour: "numeric"});
     36 
     37      let formatTimeZone = timeZonePart(dtf.formatToParts(0));
     38      let formatRangeTimeZone = timeZonePart(dtf.formatRangeToParts(0, hours(1)));
     39      assertEq(formatRangeTimeZone, formatTimeZone);
     40    }
     41  }
     42 }
     43 
     44 if (typeof reportCompare === "function")
     45  reportCompare(0, 0, "ok");