tor-browser

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

defaults.js (2750B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Temporal")||!this.hasOwnProperty("Intl"))
      2 
      3 // Test default formatting for Temporal types using different locales and all
      4 // supported calendars.
      5 
      6 const locales = [
      7  "en",
      8  "de",
      9  "fr",
     10  "es",
     11  "ar",
     12  "th",
     13  "zh",
     14  "ja",
     15 ];
     16 
     17 const timeZone = "UTC";
     18 
     19 let date = new Date(0);
     20 let instant = date.toTemporalInstant();
     21 let zonedDateTime = instant.toZonedDateTimeISO(timeZone);
     22 let plainDateTime = zonedDateTime.toPlainDateTime();
     23 let plainDate = zonedDateTime.toPlainDate();
     24 let plainTime = zonedDateTime.toPlainTime();
     25 
     26 for (let locale of locales) {
     27  for (let calendar of Intl.supportedValuesOf("calendar")) {
     28    // Calendar must match for YearMonth and MonthDay.
     29    //
     30    // https://github.com/js-temporal/proposal-temporal-v2/issues/29
     31    let calendarDate = plainDate.withCalendar(calendar);
     32    let calendarYearMonth = calendarDate.toPlainYearMonth();
     33    let calendarMonthDay = calendarDate.toPlainMonthDay();
     34 
     35    assertEq(
     36      instant.toLocaleString(locale, {timeZone, calendar}),
     37      date.toLocaleString(locale, {timeZone, calendar})
     38    );
     39    assertEq(
     40      zonedDateTime.toLocaleString(locale, {calendar}),
     41      date.toLocaleString(locale, {timeZone, calendar, timeZoneName: "short"})
     42    );
     43    assertEq(
     44      plainDateTime.toLocaleString(locale, {timeZone, calendar}),
     45      date.toLocaleString(locale, {timeZone, calendar})
     46    );
     47    assertEq(
     48      plainDate.toLocaleString(locale, {timeZone, calendar}),
     49      date.toLocaleDateString(locale, {timeZone, calendar})
     50    );
     51    assertEq(
     52      plainTime.toLocaleString(locale, {timeZone, calendar}),
     53      date.toLocaleTimeString(locale, {timeZone, calendar})
     54    );
     55    assertEq(
     56      calendarYearMonth.toLocaleString(locale, {timeZone, calendar}),
     57      date.toLocaleDateString(locale, {timeZone, calendar, year: "numeric", month: "numeric"})
     58    );
     59 
     60    // ICU4X and ICU4C don't agree on calendar computations for islamic-umalqura.
     61    //
     62    // See <https://github.com/unicode-org/icu4x/issues/4982>.
     63    //
     64    // ICU4X and ICU4C are possibly both wrong for dates around 1970 when
     65    // comparing to these comparison charts:
     66    // https://web.archive.org/web/20150324181645fw_/http://www.staff.science.uu.nl/~gent0113/islam/downloads/ksa_calendar_1356_1411.pdf
     67    //
     68    // Also see:
     69    // https://web.archive.org/web/20110611040922if_/http://www.staff.science.uu.nl:80/~gent0113/islam/ummalqura.htm
     70    if (calendar !== "islamic-umalqura") {
     71      assertEq(
     72        calendarMonthDay.toLocaleString(locale, {timeZone, calendar}),
     73        date.toLocaleDateString(locale, {timeZone, calendar, month: "numeric", day: "numeric"}),
     74      );
     75    }
     76  }
     77 }
     78 
     79 if (typeof reportCompare === "function")
     80  reportCompare(true, true);