[ {"name": "UK government year from April: late September is fiscal Q2, calendar Q3", "args": ["2026-09-23", 4], "expect": {"calendarYear": 2026, "calendarQuarter": 3, "fiscalQuarter": 2, "fiscalYearStart": "2026-04-01", "fiscalYearEnd": "2027-03-31", "fiscalQuarterStart": "2026-07-01", "fiscalQuarterEnd": "2026-09-30"}}, {"name": "April year: February is fiscal Q4 of the year that began the previous April", "args": ["2026-02-15", 4], "expect": {"calendarYear": 2026, "calendarQuarter": 1, "fiscalQuarter": 4, "fiscalYearStart": "2025-04-01", "fiscalYearEnd": "2026-03-31", "fiscalQuarterStart": "2026-01-01", "fiscalQuarterEnd": "2026-03-31"}}, {"name": "April year: 31 March is the last day of the fiscal year", "args": ["2026-03-31", 4], "expect": {"calendarYear": 2026, "calendarQuarter": 1, "fiscalQuarter": 4, "fiscalYearStart": "2025-04-01", "fiscalYearEnd": "2026-03-31", "fiscalQuarterStart": "2026-01-01", "fiscalQuarterEnd": "2026-03-31"}}, {"name": "April year: 1 April starts fiscal Q1 of a new year", "args": ["2026-04-01", 4], "expect": {"calendarYear": 2026, "calendarQuarter": 2, "fiscalQuarter": 1, "fiscalYearStart": "2026-04-01", "fiscalYearEnd": "2027-03-31", "fiscalQuarterStart": "2026-04-01", "fiscalQuarterEnd": "2026-06-30"}}, {"name": "a January start makes fiscal and calendar quarters the same", "args": ["2026-11-05", 1], "expect": {"calendarYear": 2026, "calendarQuarter": 4, "fiscalQuarter": 4, "fiscalYearStart": "2026-01-01", "fiscalYearEnd": "2026-12-31", "fiscalQuarterStart": "2026-10-01", "fiscalQuarterEnd": "2026-12-31"}}, {"name": "US federal year from October: 1 October 2026 starts fiscal Q1", "args": ["2026-10-01", 10], "expect": {"calendarYear": 2026, "calendarQuarter": 4, "fiscalQuarter": 1, "fiscalYearStart": "2026-10-01", "fiscalYearEnd": "2027-09-30", "fiscalQuarterStart": "2026-10-01", "fiscalQuarterEnd": "2026-12-31"}}, {"name": "US federal year: 30 September 2026 ends the year that began October 2025", "args": ["2026-09-30", 10], "expect": {"calendarYear": 2026, "calendarQuarter": 3, "fiscalQuarter": 4, "fiscalYearStart": "2025-10-01", "fiscalYearEnd": "2026-09-30", "fiscalQuarterStart": "2026-07-01", "fiscalQuarterEnd": "2026-09-30"}}, {"name": "July year: 29 February 2024 is fiscal Q3", "args": ["2024-02-29", 7], "expect": {"calendarYear": 2024, "calendarQuarter": 1, "fiscalQuarter": 3, "fiscalYearStart": "2023-07-01", "fiscalYearEnd": "2024-06-30", "fiscalQuarterStart": "2024-01-01", "fiscalQuarterEnd": "2024-03-31"}}, {"name": "February year: fiscal Q4 runs November to January, across the calendar year end", "args": ["2025-01-31", 2], "expect": {"calendarYear": 2025, "calendarQuarter": 1, "fiscalQuarter": 4, "fiscalYearStart": "2024-02-01", "fiscalYearEnd": "2025-01-31", "fiscalQuarterStart": "2024-11-01", "fiscalQuarterEnd": "2025-01-31"}}, {"name": "March year ending in an ordinary February ends on the 28th", "args": ["2024-05-10", 3], "expect": {"calendarYear": 2024, "calendarQuarter": 2, "fiscalQuarter": 1, "fiscalYearStart": "2024-03-01", "fiscalYearEnd": "2025-02-28", "fiscalQuarterStart": "2024-03-01", "fiscalQuarterEnd": "2024-05-31"}}, {"name": "March year ending in a leap February ends on the 29th", "args": ["2023-06-01", 3], "expect": {"calendarYear": 2023, "calendarQuarter": 2, "fiscalQuarter": 2, "fiscalYearStart": "2023-03-01", "fiscalYearEnd": "2024-02-29", "fiscalQuarterStart": "2023-06-01", "fiscalQuarterEnd": "2023-08-31"}}, {"name": "December year: December is fiscal Q1 though it is calendar Q4", "args": ["2026-12-01", 12], "expect": {"calendarYear": 2026, "calendarQuarter": 4, "fiscalQuarter": 1, "fiscalYearStart": "2026-12-01", "fiscalYearEnd": "2027-11-30", "fiscalQuarterStart": "2026-12-01", "fiscalQuarterEnd": "2027-02-28"}}, {"name": "month 13 is not a start month", "args": ["2026-09-23", 13], "expectError": "fiscalYearStartMonth must be 1-12"}, {"name": "month 0 is not a start month", "args": ["2026-09-23", 0], "expectError": "fiscalYearStartMonth must be 1-12"}, {"name": "a fractional start month is an error", "args": ["2026-09-23", 4.5], "expectError": "fiscalYearStartMonth must be an integer"}, {"name": "a fiscal year running past 9999 is an error", "args": ["9999-12-31", 4], "expectError": "outside the supported range"}, {"name": "an impossible date is an error", "args": ["2026-02-30", 4], "expectError": "is not a real calendar date"} ]