[
{ "name": "two whole years when both end dates count", "args": ["2024-01-01", "2025-12-31"], "expect": { "years": 2, "months": 0, "days": 0, "totalDays": 731 } },
{ "name": "one day short of two years", "args": ["2024-01-01", "2025-12-30"], "expect": { "years": 1, "months": 11, "days": 30, "totalDays": 730 } },
{ "name": "years, months and days across two leap days", "args": ["2020-03-15", "2026-09-23"], "expect": { "years": 6, "months": 6, "days": 9, "totalDays": 2384 } },
{ "name": "the first day of employment is one day of service", "args": ["2026-09-23", "2026-09-23"], "expect": { "years": 0, "months": 0, "days": 1, "totalDays": 1 } },
{ "name": "a start on the 31st completes two months on the 30th of a 31-day month", "args": ["2025-01-31", "2025-03-30"], "expect": { "years": 0, "months": 2, "days": 0, "totalDays": 59 } },
{ "name": "a start on 31 January completes a month when February is covered", "args": ["2025-01-31", "2025-02-27"], "expect": { "years": 0, "months": 1, "days": 0, "totalDays": 28 } },
{ "name": "eleven months and thirty days is not a year", "args": ["2025-06-15", "2026-06-13"], "expect": { "years": 0, "months": 11, "days": 30, "totalDays": 364 } },
{ "name": "twelve years to the day", "args": ["2014-04-01", "2026-03-31"], "expect": { "years": 12, "months": 0, "days": 0, "totalDays": 4383 } },
{ "name": "under a month", "args": ["2026-09-01", "2026-09-23"], "expect": { "years": 0, "months": 0, "days": 23, "totalDays": 23 } },
{ "name": "an end before the start is an error", "args": ["2026-09-23", "2026-09-22"], "expectError": "is before startDate" },
{ "name": "an impossible date is an error", "args": ["2026-02-30", "2026-09-22"], "expectError": "is not a real calendar date" }
]