tor-browser

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

hebrew-from-ordinal-month.js (2752B)


      1 // |reftest| skip-if(!this.hasOwnProperty("Temporal"))
      2 
      3 const calendar = "hebrew";
      4 
      5 function assertDate(actual, {year, month, monthCode, day}) {
      6  assertEq(actual.year, year);
      7  assertEq(actual.month, month);
      8  assertEq(actual.monthCode, monthCode);
      9  assertEq(actual.day, day);
     10 }
     11 
     12 // 5783 is a common year.
     13 const commonYear = 5783;
     14 
     15 // 5784 is a leap year.
     16 const leapYear = 5784;
     17 
     18 // Test common and leap years.
     19 for (let year of [commonYear, leapYear]) {
     20  let firstDayOfYear = Temporal.PlainDate.from({calendar, year, monthCode: "M01", day: 1});
     21  assertEq(firstDayOfYear.inLeapYear, (year === leapYear));
     22 
     23  let monthsInYear = firstDayOfYear.monthsInYear;
     24  assertEq(monthsInYear, 12 + firstDayOfYear.inLeapYear);
     25 
     26  // Test for each month in the year.
     27  for (let month = 1; month <= monthsInYear; ++month) {
     28    let firstDayOfMonthFromOrdinalMonth = Temporal.PlainDate.from({calendar, year, month, day: 1});
     29    let monthCode = firstDayOfMonthFromOrdinalMonth.monthCode;
     30    assertDate(firstDayOfMonthFromOrdinalMonth, {year, month, monthCode, day: 1});
     31 
     32    let firstDayOfMonthFromMonthCode = Temporal.PlainDate.from({calendar, year, monthCode, day: 1});
     33    assertDate(firstDayOfMonthFromMonthCode, {year, month, monthCode, day: 1});
     34 
     35    // 29-30 days for each month.
     36    let daysInMonth = firstDayOfMonthFromOrdinalMonth.daysInMonth;
     37    assertEq(29 <= daysInMonth && daysInMonth <= 30 , true);
     38 
     39    // Test for each day of the month.
     40    for (let day = 2; day <= daysInMonth; ++day) {
     41      for (let overflow of ["constrain", "reject"]) {
     42        let fromOrdinalMonth = Temporal.PlainDate.from({calendar, year, month, day}, {overflow});
     43        assertDate(fromOrdinalMonth, {year, month, monthCode, day});
     44 
     45        let fromMonthCode = Temporal.PlainDate.from({calendar, year, monthCode, day}, {overflow});
     46        assertDate(fromMonthCode, {year, month, monthCode, day});
     47      }
     48    }
     49 
     50    // Test too large day values.
     51    for (let day = daysInMonth + 1; day <= daysInMonth + 4; ++day) {
     52      let fromOrdinalMonth = Temporal.PlainDate.from({calendar, year, month, day}, {overflow: "constrain"});
     53      assertDate(fromOrdinalMonth, {year, month, monthCode, day: daysInMonth});
     54 
     55      let fromMonthCode = Temporal.PlainDate.from({calendar, year, monthCode, day}, {overflow: "constrain"});
     56      assertDate(fromMonthCode, {year, month, monthCode, day: daysInMonth});
     57 
     58      assertThrowsInstanceOf(() => {
     59        Temporal.PlainDate.from({calendar, year, month, day}, {overflow: "reject"});
     60      }, RangeError);
     61      assertThrowsInstanceOf(() => {
     62        Temporal.PlainDate.from({calendar, year, monthCode, day}, {overflow: "reject"});
     63      }, RangeError);
     64    }
     65  }
     66 }
     67 
     68 if (typeof reportCompare === "function")
     69  reportCompare(true, true);