tor-browser

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

styles.js (3558B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Temporal")||!this.hasOwnProperty("Intl"))
      2 
      3 // Test "dateStyle" and "timeStyle" with Temporal types.
      4 
      5 const locales = [
      6  "en",
      7  "de",
      8  "fr",
      9  "es",
     10  "ar",
     11  "th",
     12  "zh",
     13  "ja",
     14 ];
     15 
     16 const dateStyles = [
     17  "full", "long", "medium", "short"
     18 ];
     19 
     20 const timeStyles = [
     21  "full", "long", "medium", "short"
     22 ];
     23 
     24 const timeZone = "UTC";
     25 
     26 let date = new Date(0);
     27 let instant = date.toTemporalInstant();
     28 let zonedDateTime = instant.toZonedDateTimeISO(timeZone);
     29 let plainDateTime = zonedDateTime.toPlainDateTime();
     30 let plainDate = zonedDateTime.toPlainDate();
     31 let plainTime = zonedDateTime.toPlainTime();
     32 
     33 // let calendarDate = plainDate.withCalendar(calendar);
     34 // let calendarYearMonth = calendarDate.toPlainYearMonth();
     35 // let calendarMonthDay = calendarDate.toPlainMonthDay();
     36 
     37 function assertNe(actual, expected) {
     38  assertEq(Object.is(actual, expected), false);
     39 }
     40 
     41 for (let locale of locales) {
     42  for (let dateStyle of dateStyles) {
     43    let expected = date.toLocaleDateString(locale, {timeZone, dateStyle});
     44 
     45    assertEq(instant.toLocaleString(locale, {timeZone, dateStyle}), expected);
     46    assertEq(zonedDateTime.toLocaleString(locale, {dateStyle}), expected);
     47 
     48    // https://github.com/tc39/proposal-temporal/issues/3062
     49    if (
     50      (locale === "zh" && (dateStyle === "long" || dateStyle === "medium")) ||
     51      (locale === "ja" && (dateStyle === "full" || dateStyle === "long"))
     52    ) {
     53      assertNe(plainDateTime.toLocaleString(locale, {timeZone, dateStyle}), expected);
     54      assertNe(plainDate.toLocaleString(locale, {timeZone, dateStyle}), expected);
     55      continue;
     56    }
     57 
     58    assertEq(plainDateTime.toLocaleString(locale, {timeZone, dateStyle}), expected);
     59    assertEq(plainDate.toLocaleString(locale, {timeZone, dateStyle}), expected);
     60  }
     61 
     62  for (let timeStyle of timeStyles) {
     63    let expected = date.toLocaleTimeString(locale, {timeZone, timeStyle});
     64    assertEq(instant.toLocaleString(locale, {timeZone, timeStyle}), expected);
     65    assertEq(zonedDateTime.toLocaleString(locale, {timeStyle}), expected);
     66 
     67    // "full" and "long" time style include time zone names, which aren't used
     68    // by Temporal.PlainDateTime and Temporal.PlainTime.
     69    if (timeStyle !== "full" && timeStyle !== "long") {
     70      assertEq(plainDateTime.toLocaleString(locale, {timeZone, timeStyle}), expected);
     71      assertEq(plainTime.toLocaleString(locale, {timeZone, timeStyle}), expected);
     72    }
     73  }
     74 
     75  for (let dateStyle of dateStyles) {
     76    for (let timeStyle of timeStyles) {
     77      let expected = date.toLocaleString(locale, {timeZone, dateStyle, timeStyle});
     78 
     79      assertEq(instant.toLocaleString(locale, {timeZone, dateStyle, timeStyle}), expected);
     80      assertEq(zonedDateTime.toLocaleString(locale, {dateStyle, timeStyle}), expected);
     81 
     82      // "full" and "long" time style include time zone names, which aren't used
     83      // by Temporal.PlainDateTime and Temporal.PlainTime.
     84      if (timeStyle !== "full" && timeStyle !== "long") {
     85        // https://github.com/tc39/proposal-temporal/issues/3062
     86        if (
     87          (locale === "zh" && (dateStyle === "long" || dateStyle === "medium")) ||
     88          (locale === "ja" && (dateStyle === "full" || dateStyle === "long"))
     89        ) {
     90          assertNe(plainDateTime.toLocaleString(locale, {timeZone, dateStyle, timeStyle}), expected);
     91          continue;
     92        }
     93        assertEq(plainDateTime.toLocaleString(locale, {timeZone, dateStyle, timeStyle}), expected);
     94      }
     95    }
     96  }
     97 }
     98 
     99 if (typeof reportCompare === "function")
    100  reportCompare(true, true);