[ {"id": "today", "input": "today", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"}, {"id": "tomorrow", "input": "tomorrow", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"}, {"id": "yesterday", "input": "yesterday", "now": "2026-08-28T10:30", "expected": "2026-08-27T09:00"}, {"id": "case-insensitive", "input": " Tomorrow ", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"}, {"id": "in-3-days", "input": "in 3 days", "now": "2026-08-28T10:30", "expected": "2026-08-31T09:00"}, {"id": "in-2-weeks", "input": "in 2 weeks", "now": "2026-08-28T10:30", "expected": "2026-09-11T09:00"}, {"id": "in-2-week-singular", "input": "in 2 week", "now": "2026-08-28T10:30", "expected": "2026-09-11T09:00"}, {"id": "in-1-month", "input": "in 1 month", "now": "2026-08-28T10:30", "expected": "2026-09-28T09:00"}, {"id": "days-ago", "input": "2 days ago", "now": "2026-08-28T10:30", "expected": "2026-08-26T09:00"}, {"id": "in-2-hours", "input": "in 2 hours", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:30"}, {"id": "in-30-minutes", "input": "in 30 minutes", "now": "2026-08-28T10:30", "expected": "2026-08-28T11:00"}, {"id": "in-30-mins", "input": "in 30 mins", "now": "2026-08-28T10:30", "expected": "2026-08-28T11:00"}, {"id": "next-week", "input": "next week", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"}, {"id": "last-week", "input": "last week", "now": "2026-08-28T10:30", "expected": "2026-08-21T09:00"}, {"id": "next-month", "input": "next month", "now": "2026-08-28T10:30", "expected": "2026-09-28T09:00"}, {"id": "bare-weekday-never-today", "input": "fri", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"}, {"id": "next-monday", "input": "next monday", "now": "2026-08-28T10:30", "expected": "2026-08-31T09:00"}, {"id": "last-monday", "input": "last monday", "now": "2026-08-28T10:30", "expected": "2026-08-24T09:00"}, {"id": "next-fri-9am", "input": "next fri 9am", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"}, {"id": "day-month-time", "input": "25 dec 6pm", "now": "2026-08-28T10:30", "expected": "2026-12-25T18:00"}, {"id": "month-day", "input": "dec 25", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"}, {"id": "day-month-year", "input": "25 december 2027", "now": "2026-08-28T10:30", "expected": "2027-12-25T09:00"}, {"id": "day-month-clock", "input": "25 dec 10:00", "now": "2026-08-28T10:30", "expected": "2026-12-25T10:00"}, {"id": "day-month-rolls-forward", "input": "4 sep", "now": "2026-12-01T10:30", "expected": "2027-09-04T09:00"}, {"id": "day-month-this-year", "input": "4 sep 2026", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"}, {"id": "clock", "input": "14:30", "now": "2026-08-28T10:30", "expected": "2026-08-28T14:30"}, {"id": "pm", "input": "3pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T15:00"}, {"id": "am", "input": "9am", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"}, {"id": "midday-pm", "input": "12pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"}, {"id": "midnight-am", "input": "12am", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"}, {"id": "noon", "input": "noon", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"}, {"id": "midday", "input": "midday", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"}, {"id": "midnight", "input": "midnight", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"}, {"id": "midnight-tomorrow", "input": "midnight tomorrow", "now": "2026-08-28T10:30", "expected": "2026-08-29T00:00"}, {"id": "tomorrow-time", "input": "tomorrow 6pm", "now": "2026-08-28T10:30", "expected": "2026-08-29T18:00"}, {"id": "at-is-optional", "input": "tomorrow at 6pm", "now": "2026-08-28T10:30", "expected": "2026-08-29T18:00"}, {"id": "at-carries-a-bare-hour", "input": "tomorrow at 6", "now": "2026-08-28T10:30", "expected": "2026-08-29T06:00"}, {"id": "wire-date", "input": "2026-12-25", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"}, {"id": "wire-datetime", "input": "2026-12-25T18:30", "now": "2026-08-28T10:30", "expected": "2026-12-25T18:30"}, {"id": "numeric-day-first", "input": "25/12/2026", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"}, {"id": "numeric-month-first-swaps", "input": "12/25/2026", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"}, {"id": "numeric-short-year", "input": "25/12/26", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"}, {"id": "bare-year-does-not-commit-today", "input": "2030", "now": "2026-08-28T10:30", "expected": "2030-08-28T09:00"}, {"id": "own-display-reads-back", "input": "Fri, Aug 28, 2026", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"}, {"id": "own-display-year-edited", "input": "Fri, Aug 28, 2030", "now": "2026-08-28T10:30", "expected": "2030-08-28T09:00"}, {"id": "range-end-time-only-lands-on-the-start-day", "input": "5pm", "now": "2026-08-28T10:30", "prev": "2026-08-20T09:00", "base": "2026-12-25T10:00", "expected": "2026-12-25T17:00"}, {"id": "range-end-partial-date-keeps-its-own-day", "input": "2030", "now": "2026-08-28T10:30", "prev": "2026-08-20T17:00", "base": "2026-12-25T10:00", "expected": "2030-08-20T17:00"}, {"id": "no-time-inherits-the-fields-clock", "input": "tomorrow", "now": "2026-08-28T10:30", "prev": "2026-08-20T17:45", "expected": "2026-08-29T17:45"}, {"id": "no-phrase-inside-a-word", "input": "atlas", "now": "2026-08-28T10:30", "expected": null}, {"id": "spelled-out-quantity", "input": "in two weeks", "now": "2026-08-28T10:30", "expected": null}, {"id": "both-directions-at-once-is-a-contradiction", "input": "in 2 weeks ago", "now": "2026-08-28T10:30", "expected": null}, {"id": "meridiem-detached", "input": "6 pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T18:00"}, {"id": "relative-day-with-a-clock", "input": "in 2 days at 5pm", "now": "2026-08-28T10:30", "expected": "2026-08-30T17:00"}, {"id": "own-datetime-display-reads-back", "input": "Fri, Aug 28, 2026, 9:00 AM", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"}, {"id": "midnight-boundary", "input": "24:00", "now": "2026-08-28T10:30", "expected": null}, {"id": "bare-year-below-a-thousand-is-refused", "input": "0500", "now": "2026-08-28T10:30", "expected": null}, {"id": "three-digit-year-is-refused", "input": "0999", "now": "2026-08-28T10:30", "expected": null}, {"id": "earliest-year-a-carrier-can-hold", "input": "1000", "now": "2026-08-28T10:30", "expected": "1000-08-28T09:00"}, {"id": "impossible-hour-with-a-meridiem", "input": "25pm", "now": "2026-08-28T10:30", "expected": null}, {"id": "impossible-hour-with-am", "input": "99am", "now": "2026-08-28T10:30", "expected": null}, {"id": "hour-zero-with-am-is-midnight", "input": "0am", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"}, {"id": "hour-zero-with-pm-is-noon", "input": "0pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"}, {"id": "month-day-year-below-a-thousand", "input": "25 dec 0500", "now": "2026-08-28T10:30", "expected": null}, {"id": "month-day-year-zero", "input": "25 dec 0000", "now": "2026-08-28T10:30", "expected": null}, {"id": "month-day-three-digit-year", "input": "25 dec 500", "now": "2026-08-28T10:30", "expected": null}, {"id": "wire-date-below-a-thousand", "input": "0500-12-25", "now": "2026-08-28T10:30", "expected": null}, {"id": "numeric-date-below-a-thousand", "input": "25/12/0500", "now": "2026-08-28T10:30", "expected": null}, {"id": "junk", "input": "wibble", "now": "2026-08-28T10:30", "expected": null}, {"id": "empty", "input": "", "now": "2026-08-28T10:30", "expected": null}, {"id": "blank", "input": " ", "now": "2026-08-28T10:30", "expected": null}, {"id": "dangling-modifier", "input": "next", "now": "2026-08-28T10:30", "expected": null}, {"id": "month-with-no-day", "input": "december", "now": "2026-08-28T10:30", "expected": null}, {"id": "leftover-number", "input": "25 dec 26 27", "now": "2026-08-28T10:30", "expected": null}, {"id": "trailing-junk", "input": "tomorrow wibble", "now": "2026-08-28T10:30", "expected": null}, {"id": "impossible-day", "input": "31 february", "now": "2026-08-28T10:30", "expected": null}, {"id": "impossible-clock", "input": "25:00", "now": "2026-08-28T10:30", "expected": null}, {"id": "impossible-minute", "input": "14:70", "now": "2026-08-28T10:30", "expected": null}, {"id": "day-and-a-month-prefix", "input": "5j", "now": "2026-08-28T10:30", "expected": "2027-01-05T09:00", "alternatives": ["2027-06-05T09:00", "2027-07-05T09:00"]}, {"id": "day-and-a-month-prefix-spaced", "input": "5 j", "now": "2026-08-28T10:30", "expected": "2027-01-05T09:00", "alternatives": ["2027-06-05T09:00", "2027-07-05T09:00"]}, {"id": "a-longer-prefix-offers-fewer-months", "input": "5 ju", "now": "2026-08-28T10:30", "expected": "2027-06-05T09:00", "alternatives": ["2027-07-05T09:00"]}, {"id": "an-unambiguous-prefix-is-one-reading", "input": "5 jun", "now": "2026-08-28T10:30", "expected": "2027-06-05T09:00", "alternatives": []}, {"id": "a-prefix-month-still-ahead-keeps-this-year", "input": "25 dece", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00", "alternatives": []}, {"id": "a-word-of-the-vocabulary-completes", "input": "tomo", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"}, {"id": "yesterday-half-typed", "input": "yest", "now": "2026-08-28T10:30", "expected": "2026-08-27T09:00"}, {"id": "midnight-half-typed", "input": "midn", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"}, {"id": "a-weekday-half-typed", "input": "wedn", "now": "2026-08-28T10:30", "expected": "2026-09-02T09:00"}, {"id": "a-prefix-of-no-month-is-still-refused", "input": "5 z", "now": "2026-08-28T10:30", "expected": null}, {"id": "junk-that-is-not-a-prefix-is-still-junk", "input": "wibbl", "now": "2026-08-28T10:30", "expected": null}, {"id": "two-unfinished-words-complete-neither", "input": "qq 5 j", "now": "2026-08-28T10:30", "expected": null}, {"id": "a-month-prefix-with-no-day-is-refused", "input": "dece", "now": "2026-08-28T10:30", "expected": null} ]