AbdulElahGwaith's picture
Upload folder using huggingface_hub
cf86710 verified
import { daysInHebrewMonth } from "./calendarMath.js";
import { toHebrewDate } from "./dateConversion.js";
import {
clampHebrewDay,
hebrewMonthNumber,
monthIndexToHebrewDate,
monthsSinceEpoch,
} from "./serial.js";
describe("hebrew serial helpers", () => {
test("clamps invalid day when switching month", () => {
const month = monthIndexToHebrewDate(0, 40);
expect(month.day).toBeLessThanOrEqual(
daysInHebrewMonth(month.year, month.monthIndex),
);
});
test("monthsSinceEpoch round trip", () => {
const dates = [
new Date(2024, 3, 23),
new Date(1990, 0, 1),
new Date(1500, 5, 15),
];
dates.forEach((date) => {
const hebrew = toHebrewDate(date);
const index = monthsSinceEpoch(hebrew);
const roundTrip = monthIndexToHebrewDate(index, hebrew.day);
expect(roundTrip.year).toBe(hebrew.year);
expect(roundTrip.monthIndex).toBe(hebrew.monthIndex);
expect(roundTrip.day).toBe(hebrew.day);
});
});
test("monthsSinceEpoch handles negative indices", () => {
const previousMonth = monthIndexToHebrewDate(-1, 1);
expect(previousMonth.year).toBe(0);
expect(previousMonth.monthIndex).toBeGreaterThanOrEqual(0);
});
test("clampHebrewDay returns original day when valid", () => {
const hebrew = toHebrewDate(new Date(2024, 3, 10));
const clamped = clampHebrewDay(hebrew.year, hebrew.monthIndex, hebrew.day);
expect(clamped).toBe(hebrew.day);
});
test("clampHebrewDay returns month maximum", () => {
const year = 5785;
const cheshvanIndex = 1;
const clamped = clampHebrewDay(year, cheshvanIndex, 30);
expect(clamped).toBe(daysInHebrewMonth(year, cheshvanIndex));
});
test("hebrewMonthNumber converts to 1-based", () => {
expect(hebrewMonthNumber(0)).toBe(1);
});
});