tor-browser

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

day-period-standalone.js (7078B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Intl"))
      2 
      3 // Tests using various locales to cover all day period types:
      4 // "midnight", "noon", "morning1", "morning2", "afternoon1", "afternoon2",
      5 // "evening1", "evening2", "night1", "night2".
      6 
      7 const tests = [
      8  {
      9      // ICU doesn't support "midnight" and instead uses "night1" resp. "night2".
     10      // ICU bug: https://unicode-org.atlassian.net/projects/ICU/issues/ICU-12278
     11      date: new Date("2019-01-01T00:00:00"),
     12      locales: {
     13          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     14          de: { narrow: "nachts", short: "nachts", long: "nachts" },
     15          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
     16          ja: { narrow: "夜中", short: "夜中", long: "夜中" },
     17      }
     18  },
     19  {
     20      date: new Date("2019-01-01T03:00:00"),
     21      locales: {
     22          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     23          de: { narrow: "nachts", short: "nachts", long: "nachts" },
     24          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
     25          ja: { narrow: "夜中", short: "夜中", long: "夜中" },
     26      }
     27  },
     28  {
     29      date: new Date("2019-01-01T04:00:00"),
     30      locales: {
     31          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     32          de: { narrow: "nachts", short: "nachts", long: "nachts" },
     33          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
     34          ja: { narrow: "朝", short: "朝", long: "朝" },
     35      }
     36  },
     37  {
     38      date: new Date("2019-01-01T05:00:00"),
     39      locales: {
     40          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     41          de: { narrow: "morgens", short: "morgens", long: "morgens" },
     42          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
     43          ja: { narrow: "朝", short: "朝", long: "朝" },
     44      }
     45  },
     46  {
     47      date: new Date("2019-01-01T06:00:00"),
     48      locales: {
     49          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     50          de: { narrow: "morgens", short: "morgens", long: "morgens" },
     51          th: { narrow: "เช้า", short: "ในตอนเช้า", long: "ในตอนเช้า" },
     52          ja: { narrow: "朝", short: "朝", long: "朝" },
     53      }
     54  },
     55  {
     56      date: new Date("2019-01-01T10:00:00"),
     57      locales: {
     58          en: { narrow: "in the morning", short: "in the morning", long: "in the morning" },
     59          de: { narrow: "vorm.", short: "vorm.", long: "vormittags" },
     60          th: { narrow: "เช้า", short: "ในตอนเช้า", long: "ในตอนเช้า" },
     61          ja: { narrow: "朝", short: "朝", long: "朝" },
     62      }
     63  },
     64  {
     65      date: new Date("2019-01-01T12:00:00"),
     66      locales: {
     67          en: { narrow: "n", short: "noon", long: "noon" },
     68          de: { narrow: "mittags", short: "mittags", long: "mittags" },
     69          th: { narrow: "เที่ยง", short: "เที่ยง", long: "เที่ยง" },
     70          ja: { narrow: "正午", short: "正午", long: "正午" },
     71      }
     72  },
     73  {
     74      date: new Date("2019-01-01T13:00:00"),
     75      locales: {
     76          en: { narrow: "in the afternoon", short: "in the afternoon", long: "in the afternoon" },
     77          de: { narrow: "nachm.", short: "nachm.", long: "nachmittags" },
     78          th: { narrow: "บ่าย", short: "บ่าย", long: "บ่าย" },
     79          ja: { narrow: "昼", short: "昼", long: "昼" },
     80      }
     81  },
     82  {
     83      date: new Date("2019-01-01T15:00:00"),
     84      locales: {
     85          en: { narrow: "in the afternoon", short: "in the afternoon", long: "in the afternoon" },
     86          de: { narrow: "nachm.", short: "nachm.", long: "nachmittags" },
     87          th: { narrow: "บ่าย", short: "บ่าย", long: "บ่าย" },
     88          ja: { narrow: "昼", short: "昼", long: "昼" },
     89      }
     90  },
     91  {
     92      date: new Date("2019-01-01T16:00:00"),
     93      locales: {
     94          en: { narrow: "in the afternoon", short: "in the afternoon", long: "in the afternoon" },
     95          de: { narrow: "nachm.", short: "nachm.", long: "nachmittags" },
     96          th: { narrow: "เย็น", short: "ในตอนเย็น", long: "ในตอนเย็น" },
     97          ja: { narrow: "夕方", short: "夕方", long: "夕方" },
     98      }
     99  },
    100  {
    101      date: new Date("2019-01-01T18:00:00"),
    102      locales: {
    103          en: { narrow: "in the evening", short: "in the evening", long: "in the evening" },
    104          de: { narrow: "abends", short: "abends", long: "abends" },
    105          th: { narrow: "ค่ำ", short: "ค่ำ", long: "ค่ำ" },
    106          ja: { narrow: "夕方", short: "夕方", long: "夕方" },
    107      }
    108  },
    109  {
    110      date: new Date("2019-01-01T19:00:00"),
    111      locales: {
    112          en: { narrow: "in the evening", short: "in the evening", long: "in the evening" },
    113          de: { narrow: "abends", short: "abends", long: "abends" },
    114          th: { narrow: "ค่ำ", short: "ค่ำ", long: "ค่ำ" },
    115          ja: { narrow: "夜", short: "夜", long: "夜" },
    116      }
    117  },
    118  {
    119      date: new Date("2019-01-01T21:00:00"),
    120      locales: {
    121          en: { narrow: "at night", short: "at night", long: "at night" },
    122          de: { narrow: "abends", short: "abends", long: "abends" },
    123          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
    124          ja: { narrow: "夜", short: "夜", long: "夜" },
    125      }
    126  },
    127  {
    128      date: new Date("2019-01-01T22:00:00"),
    129      locales: {
    130          en: { narrow: "at night", short: "at night", long: "at night" },
    131          de: { narrow: "abends", short: "abends", long: "abends" },
    132          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
    133          ja: { narrow: "夜", short: "夜", long: "夜" },
    134      }
    135  },
    136  {
    137      date: new Date("2019-01-01T23:00:00"),
    138      locales: {
    139          en: { narrow: "at night", short: "at night", long: "at night" },
    140          de: { narrow: "abends", short: "abends", long: "abends" },
    141          th: { narrow: "กลางคืน", short: "กลางคืน", long: "กลางคืน" },
    142          ja: { narrow: "夜中", short: "夜中", long: "夜中" },
    143      }
    144  },
    145 ];
    146 
    147 for (let {date, locales} of tests) {
    148    for (let [locale, formats] of Object.entries(locales)) {
    149        for (let [dayPeriod, expected] of Object.entries(formats)) {
    150            let dtf = new Intl.DateTimeFormat(locale, {dayPeriod});
    151 
    152            assertEq(dtf.format(date), expected,
    153                     `locale=${locale}, date=${date}, dayPeriod=${dayPeriod}`);
    154            assertDeepEq(dtf.formatToParts(date), [{type: "dayPeriod", value: expected}]);
    155        }
    156    }
    157 }
    158 
    159 if (typeof reportCompare === "function")
    160    reportCompare(0, 0, "ok");