import { daysInHebrewMonth, daysInHebrewYear, getMonthCode, isHebrewLeapYear, monthsInHebrewYear, roshHashanah, } from "./calendarMath.js"; describe("hebrew calendar math", () => { test("computes days in year", () => { expect(daysInHebrewYear(5784)).toBe(383); expect(daysInHebrewYear(5785)).toBe(354); }); test("knows leap years", () => { expect(isHebrewLeapYear(5784)).toBe(true); expect(isHebrewLeapYear(5785)).toBe(false); }); test("getMonthCode returns correct code", () => { expect(getMonthCode(5785, 0)).toBe("tishrei"); }); test("daysInHebrewMonth returns correct length", () => { expect(daysInHebrewMonth(5785, 0)).toBe(30); }); test("monthsInHebrewYear handles leap and common years", () => { expect(monthsInHebrewYear(5784)).toBe(13); expect(monthsInHebrewYear(5785)).toBe(12); }); test("daysInHebrewMonth reflects deficient and complete years", () => { expect(daysInHebrewMonth(5782, 1)).toBe(30); expect(daysInHebrewMonth(5782, 2)).toBe(30); expect(daysInHebrewMonth(5775, 1)).toBe(29); expect(daysInHebrewMonth(5775, 2)).toBe(29); }); test("roshHashanah difference equals length of previous year", () => { const diff = roshHashanah(5785) - roshHashanah(5784); expect(diff).toBe(daysInHebrewYear(5784)); }); });