tor-browser

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

era-boundary-japanese.js (10184B)


      1 // |reftest| skip-if(!this.hasOwnProperty('Temporal')) -- Temporal is not enabled unconditionally
      2 // Copyright (C) 2025 Igalia, S.L. All rights reserved.
      3 // This code is governed by the BSD license found in the LICENSE file.
      4 
      5 /*---
      6 esid: sec-temporal.zoneddatetime.from
      7 description: >
      8  Dates in same year or years before era starts should resolve to previous era
      9  (Japanese calendar)
     10 includes: [temporalHelpers.js]
     11 features: [Temporal, Intl.Era-monthcode]
     12 ---*/
     13 
     14 const calendar = "japanese";
     15 const options = { overflow: "reject" };
     16 
     17 const reiwa1BeforeStart = Temporal.ZonedDateTime.from({ era: "reiwa", eraYear: 1, monthCode: "M04", day: 30, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     18 TemporalHelpers.assertPlainDateTime(
     19  reiwa1BeforeStart.toPlainDateTime(),
     20  2019, 4, "M04", 30, 12, 34, 0, 0, 0, 0, "Reiwa 1 resolves to Heisei 31 before era start date",
     21  "heisei", 31);
     22 
     23 const reiwa0 = Temporal.ZonedDateTime.from({ era: "reiwa", eraYear: 0, monthCode: "M05", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     24 TemporalHelpers.assertPlainDateTime(
     25  reiwa0.toPlainDateTime(),
     26  2018, 5, "M05", 1, 12, 34, 0, 0, 0, 0, "Reiwa 0 resolves to Heisei 30",
     27  "heisei", 30);
     28 
     29 const reiwa1n = Temporal.ZonedDateTime.from({ era: "reiwa", eraYear: -1, monthCode: "M05", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     30 TemporalHelpers.assertPlainDateTime(
     31  reiwa1n.toPlainDateTime(),
     32  2017, 5, "M05", 1, 12, 34, 0, 0, 0, 0, "Reiwa -1 resolves to Heisei 29",
     33  "heisei", 29);
     34 
     35 const heisei31AfterStart = Temporal.ZonedDateTime.from({ era: "heisei", eraYear: 31, monthCode: "M05", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     36 TemporalHelpers.assertPlainDateTime(
     37  heisei31AfterStart.toPlainDateTime(),
     38  2019, 5, "M05", 1, 12, 34, 0, 0, 0, 0, "Heisei 31 resolves to Reiwa 1 after era start date",
     39  "reiwa", 1);
     40 
     41 const heisei1BeforeStart = Temporal.ZonedDateTime.from({ era: "heisei", eraYear: 1, monthCode: "M01", day: 7, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     42 TemporalHelpers.assertPlainDateTime(
     43  heisei1BeforeStart.toPlainDateTime(),
     44  1989, 1, "M01", 7, 12, 34, 0, 0, 0, 0, "Heisei 1 resolves to Showa 64 before era start date",
     45  "showa", 64);
     46 
     47 const heisei0 = Temporal.ZonedDateTime.from({ era: "heisei", eraYear: 0, monthCode: "M01", day: 8, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     48 TemporalHelpers.assertPlainDateTime(
     49  heisei0.toPlainDateTime(),
     50  1988, 1, "M01", 8, 12, 34, 0, 0, 0, 0, "Heisei 0 resolves to Showa 63",
     51  "showa", 63);
     52 
     53 const heisei1n = Temporal.ZonedDateTime.from({ era: "heisei", eraYear: -1, monthCode: "M01", day: 8, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     54 TemporalHelpers.assertPlainDateTime(
     55  heisei1n.toPlainDateTime(),
     56  1987, 1, "M01", 8, 12, 34, 0, 0, 0, 0, "Heisei -1 resolves to Showa 62",
     57  "showa", 62);
     58 
     59 const showa64AfterStart = Temporal.ZonedDateTime.from({ era: "showa", eraYear: 64, monthCode: "M01", day: 8, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     60 TemporalHelpers.assertPlainDateTime(
     61  showa64AfterStart.toPlainDateTime(),
     62  1989, 1, "M01", 8, 12, 34, 0, 0, 0, 0, "Showa 64 resolves to Heisei 1 after era start date",
     63  "heisei", 1);
     64 
     65 const showa1BeforeStart = Temporal.ZonedDateTime.from({ era: "showa", eraYear: 1, monthCode: "M12", day: 24, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     66 TemporalHelpers.assertPlainDateTime(
     67  showa1BeforeStart.toPlainDateTime(),
     68  1926, 12, "M12", 24, 12, 34, 0, 0, 0, 0, "Showa 1 resolves to Taisho 15 before era start date",
     69  "taisho", 15);
     70 
     71 const showa0 = Temporal.ZonedDateTime.from({ era: "showa", eraYear: 0, monthCode: "M12", day: 25, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     72 TemporalHelpers.assertPlainDateTime(
     73  showa0.toPlainDateTime(),
     74  1925, 12, "M12", 25, 12, 34, 0, 0, 0, 0, "Showa 0 resolves to Taisho 14",
     75  "taisho", 14);
     76 
     77 const showa1n = Temporal.ZonedDateTime.from({ era: "showa", eraYear: -1, monthCode: "M12", day: 25, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     78 TemporalHelpers.assertPlainDateTime(
     79  showa1n.toPlainDateTime(),
     80  1924, 12, "M12", 25, 12, 34, 0, 0, 0, 0, "Showa -1 resolves to Taisho 13",
     81  "taisho", 13);
     82 
     83 const taisho15AfterStart = Temporal.ZonedDateTime.from({ era: "taisho", eraYear: 15, monthCode: "M12", day: 25, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     84 TemporalHelpers.assertPlainDateTime(
     85  taisho15AfterStart.toPlainDateTime(),
     86  1926, 12, "M12", 25, 12, 34, 0, 0, 0, 0, "Taisho 15 resolves to Showa 1 after era start date",
     87  "showa", 1);
     88 
     89 const taisho1BeforeStart = Temporal.ZonedDateTime.from({ era: "taisho", eraYear: 1, monthCode: "M07", day: 29, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     90 TemporalHelpers.assertPlainDateTime(
     91  taisho1BeforeStart.toPlainDateTime(),
     92  1912, 7, "M07", 29, 12, 34, 0, 0, 0, 0, "Taisho 1 resolves to Meiji 45 before era start date",
     93  "meiji", 45);
     94 
     95 const taisho0 = Temporal.ZonedDateTime.from({ era: "taisho", eraYear: 0, monthCode: "M07", day: 30, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
     96 TemporalHelpers.assertPlainDateTime(
     97  taisho0.toPlainDateTime(),
     98  1911, 7, "M07", 30, 12, 34, 0, 0, 0, 0, "Taisho 0 resolves to Meiji 44",
     99  "meiji", 44);
    100 
    101 const taisho1n = Temporal.ZonedDateTime.from({ era: "taisho", eraYear: -1, monthCode: "M07", day: 30, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    102 TemporalHelpers.assertPlainDateTime(
    103  taisho1n.toPlainDateTime(),
    104  1910, 7, "M07", 30, 12, 34, 0, 0, 0, 0, "Taisho -1 resolves to Meiji 43",
    105  "meiji", 43);
    106 
    107 const meiji45AfterStart = Temporal.ZonedDateTime.from({ era: "meiji", eraYear: 45, monthCode: "M07", day: 30, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    108 TemporalHelpers.assertPlainDateTime(
    109  meiji45AfterStart.toPlainDateTime(),
    110  1912, 7, "M07", 30, 12, 34, 0, 0, 0, 0, "Meiji 45 resolves to Taisho 1 after era start date",
    111  "taisho", 1);
    112 
    113 const meiji1BeforeStart = Temporal.ZonedDateTime.from({ era: "meiji", eraYear: 1, monthCode: "M10", day: 22, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    114 TemporalHelpers.assertPlainDateTime(
    115  meiji1BeforeStart.toPlainDateTime(),
    116  1868, 10, "M10", 22, 12, 34, 0, 0, 0, 0, "Meiji 1 resolves to CE 1868 before era start date",
    117  "ce", 1868);
    118 
    119 const meiji0 = Temporal.ZonedDateTime.from({ era: "meiji", eraYear: 0, monthCode: "M10", day: 23, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    120 TemporalHelpers.assertPlainDateTime(
    121  meiji0.toPlainDateTime(),
    122  1867, 10, "M10", 23, 12, 34, 0, 0, 0, 0, "Meiji 0 resolves to CE 1867",
    123  "ce", 1867);
    124 
    125 const meiji1n = Temporal.ZonedDateTime.from({ era: "meiji", eraYear: -1, monthCode: "M10", day: 23, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    126 TemporalHelpers.assertPlainDateTime(
    127  meiji1n.toPlainDateTime(),
    128  1866, 10, "M10", 23, 12, 34, 0, 0, 0, 0, "Meiji -1 resolves to CE 1866",
    129  "ce", 1866);
    130 
    131 const ce1868AfterStart = Temporal.ZonedDateTime.from({ era: "ce", eraYear: 1868, monthCode: "M10", day: 23, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    132 TemporalHelpers.assertPlainDateTime(
    133  ce1868AfterStart.toPlainDateTime(),
    134  1868, 10, "M10", 23, 12, 34, 0, 0, 0, 0, "CE 1868 resolves to Meiji 1 after era start date",
    135  "meiji", 1);
    136 
    137 const ce0 = Temporal.ZonedDateTime.from({ era: "ce", eraYear: 0, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    138 TemporalHelpers.assertPlainDateTime(
    139  ce0.toPlainDateTime(),
    140  0, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "CE 0 resolves to BCE 1",
    141  "bce", 1);
    142 
    143 const ce1n = Temporal.ZonedDateTime.from({ era: "ce", eraYear: -1, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    144 TemporalHelpers.assertPlainDateTime(
    145  ce1n.toPlainDateTime(),
    146  -1, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "CE -1 resolves to BCE 2",
    147  "bce", 2);
    148 
    149 const bce0 = Temporal.ZonedDateTime.from({ era: "bce", eraYear: 0, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    150 TemporalHelpers.assertPlainDateTime(
    151  bce0.toPlainDateTime(),
    152  1, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "BCE 0 resolves to CE 1",
    153  "ce", 1);
    154 
    155 const bce1n = Temporal.ZonedDateTime.from({ era: "bce", eraYear: -1, monthCode: "M01", day: 1, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    156 TemporalHelpers.assertPlainDateTime(
    157  bce1n.toPlainDateTime(),
    158  2, 1, "M01", 1, 12, 34, 0, 0, 0, 0, "BCE -1 resolves to CE 2",
    159  "ce", 2);
    160 
    161 // Years far after the end of an era
    162 
    163 const heisei100 = Temporal.ZonedDateTime.from({ era: "heisei", eraYear: 100, monthCode: "M12", day: 31, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    164 TemporalHelpers.assertPlainDateTime(
    165  heisei100.toPlainDateTime(),
    166  2088, 12, "M12", 31, 12, 34, 0, 0, 0, 0, "Heisei 100 resolves to Reiwa 70",
    167  "reiwa", 70);
    168 
    169 const showa100 = Temporal.ZonedDateTime.from({ era: "showa", eraYear: 100, monthCode: "M12", day: 31, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    170 TemporalHelpers.assertPlainDateTime(
    171  showa100.toPlainDateTime(),
    172  2025, 12, "M12", 31, 12, 34, 0, 0, 0, 0, "Showa 100 resolves to Reiwa 7",
    173  "reiwa", 7);
    174 
    175 const taisho100 = Temporal.ZonedDateTime.from({ era: "taisho", eraYear: 100, monthCode: "M12", day: 31, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    176 TemporalHelpers.assertPlainDateTime(
    177  taisho100.toPlainDateTime(),
    178  2011, 12, "M12", 31, 12, 34, 0, 0, 0, 0, "Taisho 100 resolves to Heisei 23",
    179  "heisei", 23);
    180 
    181 const meiji100 = Temporal.ZonedDateTime.from({ era: "meiji", eraYear: 100, monthCode: "M12", day: 31, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    182 TemporalHelpers.assertPlainDateTime(
    183  meiji100.toPlainDateTime(),
    184  1967, 12, "M12", 31, 12, 34, 0, 0, 0, 0, "Meiji 100 resolves to Showa 42",
    185  "showa", 42);
    186 
    187 const ce2000 = Temporal.ZonedDateTime.from({ era: "ce", eraYear: 2000, monthCode: "M12", day: 31, hour: 12, minute: 34, timeZone: "UTC", calendar }, options);
    188 TemporalHelpers.assertPlainDateTime(
    189  ce2000.toPlainDateTime(),
    190  2000, 12, "M12", 31, 12, 34, 0, 0, 0, 0, "CE 2000 resolves to Heisei 12",
    191  "heisei", 12);
    192 
    193 reportCompare(0, 0);