rastrillo / fiesta Public

Clone
git clone https://amadan.net/rastrillo/fiesta

Plain git — no account needed to clone.

Download

Download this file

1[
2 {"id": "today", "input": "today", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"},
3 {"id": "tomorrow", "input": "tomorrow", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"},
4 {"id": "yesterday", "input": "yesterday", "now": "2026-08-28T10:30", "expected": "2026-08-27T09:00"},
5 {"id": "case-insensitive", "input": " Tomorrow ", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"},
6
7 {"id": "in-3-days", "input": "in 3 days", "now": "2026-08-28T10:30", "expected": "2026-08-31T09:00"},
8 {"id": "in-2-weeks", "input": "in 2 weeks", "now": "2026-08-28T10:30", "expected": "2026-09-11T09:00"},
9 {"id": "in-2-week-singular", "input": "in 2 week", "now": "2026-08-28T10:30", "expected": "2026-09-11T09:00"},
10 {"id": "in-1-month", "input": "in 1 month", "now": "2026-08-28T10:30", "expected": "2026-09-28T09:00"},
11 {"id": "days-ago", "input": "2 days ago", "now": "2026-08-28T10:30", "expected": "2026-08-26T09:00"},
12 {"id": "in-2-hours", "input": "in 2 hours", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:30"},
13 {"id": "in-30-minutes", "input": "in 30 minutes", "now": "2026-08-28T10:30", "expected": "2026-08-28T11:00"},
14 {"id": "in-30-mins", "input": "in 30 mins", "now": "2026-08-28T10:30", "expected": "2026-08-28T11:00"},
15
16 {"id": "next-week", "input": "next week", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"},
17 {"id": "last-week", "input": "last week", "now": "2026-08-28T10:30", "expected": "2026-08-21T09:00"},
18 {"id": "next-month", "input": "next month", "now": "2026-08-28T10:30", "expected": "2026-09-28T09:00"},
19
20 {"id": "bare-weekday-never-today", "input": "fri", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"},
21 {"id": "next-monday", "input": "next monday", "now": "2026-08-28T10:30", "expected": "2026-08-31T09:00"},
22 {"id": "last-monday", "input": "last monday", "now": "2026-08-28T10:30", "expected": "2026-08-24T09:00"},
23 {"id": "next-fri-9am", "input": "next fri 9am", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"},
24
25 {"id": "day-month-time", "input": "25 dec 6pm", "now": "2026-08-28T10:30", "expected": "2026-12-25T18:00"},
26 {"id": "month-day", "input": "dec 25", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"},
27 {"id": "day-month-year", "input": "25 december 2027", "now": "2026-08-28T10:30", "expected": "2027-12-25T09:00"},
28 {"id": "day-month-clock", "input": "25 dec 10:00", "now": "2026-08-28T10:30", "expected": "2026-12-25T10:00"},
29 {"id": "day-month-rolls-forward", "input": "4 sep", "now": "2026-12-01T10:30", "expected": "2027-09-04T09:00"},
30 {"id": "day-month-this-year", "input": "4 sep 2026", "now": "2026-08-28T10:30", "expected": "2026-09-04T09:00"},
31
32 {"id": "clock", "input": "14:30", "now": "2026-08-28T10:30", "expected": "2026-08-28T14:30"},
33 {"id": "pm", "input": "3pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T15:00"},
34 {"id": "am", "input": "9am", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"},
35 {"id": "midday-pm", "input": "12pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"},
36 {"id": "midnight-am", "input": "12am", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"},
37 {"id": "noon", "input": "noon", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"},
38 {"id": "midday", "input": "midday", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"},
39 {"id": "midnight", "input": "midnight", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"},
40 {"id": "midnight-tomorrow", "input": "midnight tomorrow", "now": "2026-08-28T10:30", "expected": "2026-08-29T00:00"},
41 {"id": "tomorrow-time", "input": "tomorrow 6pm", "now": "2026-08-28T10:30", "expected": "2026-08-29T18:00"},
42 {"id": "at-is-optional", "input": "tomorrow at 6pm", "now": "2026-08-28T10:30", "expected": "2026-08-29T18:00"},
43 {"id": "at-carries-a-bare-hour", "input": "tomorrow at 6", "now": "2026-08-28T10:30", "expected": "2026-08-29T06:00"},
44
45 {"id": "wire-date", "input": "2026-12-25", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"},
46 {"id": "wire-datetime", "input": "2026-12-25T18:30", "now": "2026-08-28T10:30", "expected": "2026-12-25T18:30"},
47 {"id": "numeric-day-first", "input": "25/12/2026", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"},
48 {"id": "numeric-month-first-swaps", "input": "12/25/2026", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"},
49 {"id": "numeric-short-year", "input": "25/12/26", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00"},
50
51 {"id": "bare-year-does-not-commit-today", "input": "2030", "now": "2026-08-28T10:30", "expected": "2030-08-28T09:00"},
52 {"id": "own-display-reads-back", "input": "Fri, Aug 28, 2026", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"},
53 {"id": "own-display-year-edited", "input": "Fri, Aug 28, 2030", "now": "2026-08-28T10:30", "expected": "2030-08-28T09:00"},
54
55 {"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"},
56 {"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"},
57 {"id": "no-time-inherits-the-fields-clock", "input": "tomorrow", "now": "2026-08-28T10:30", "prev": "2026-08-20T17:45", "expected": "2026-08-29T17:45"},
58
59 {"id": "no-phrase-inside-a-word", "input": "atlas", "now": "2026-08-28T10:30", "expected": null},
60 {"id": "spelled-out-quantity", "input": "in two weeks", "now": "2026-08-28T10:30", "expected": null},
61 {"id": "both-directions-at-once-is-a-contradiction", "input": "in 2 weeks ago", "now": "2026-08-28T10:30", "expected": null},
62 {"id": "meridiem-detached", "input": "6 pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T18:00"},
63 {"id": "relative-day-with-a-clock", "input": "in 2 days at 5pm", "now": "2026-08-28T10:30", "expected": "2026-08-30T17:00"},
64 {"id": "own-datetime-display-reads-back", "input": "Fri, Aug 28, 2026, 9:00 AM", "now": "2026-08-28T10:30", "expected": "2026-08-28T09:00"},
65 {"id": "midnight-boundary", "input": "24:00", "now": "2026-08-28T10:30", "expected": null},
66
67 {"id": "bare-year-below-a-thousand-is-refused", "input": "0500", "now": "2026-08-28T10:30", "expected": null},
68 {"id": "three-digit-year-is-refused", "input": "0999", "now": "2026-08-28T10:30", "expected": null},
69 {"id": "earliest-year-a-carrier-can-hold", "input": "1000", "now": "2026-08-28T10:30", "expected": "1000-08-28T09:00"},
70
71 {"id": "impossible-hour-with-a-meridiem", "input": "25pm", "now": "2026-08-28T10:30", "expected": null},
72 {"id": "impossible-hour-with-am", "input": "99am", "now": "2026-08-28T10:30", "expected": null},
73 {"id": "hour-zero-with-am-is-midnight", "input": "0am", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"},
74 {"id": "hour-zero-with-pm-is-noon", "input": "0pm", "now": "2026-08-28T10:30", "expected": "2026-08-28T12:00"},
75 {"id": "month-day-year-below-a-thousand", "input": "25 dec 0500", "now": "2026-08-28T10:30", "expected": null},
76 {"id": "month-day-year-zero", "input": "25 dec 0000", "now": "2026-08-28T10:30", "expected": null},
77 {"id": "month-day-three-digit-year", "input": "25 dec 500", "now": "2026-08-28T10:30", "expected": null},
78 {"id": "wire-date-below-a-thousand", "input": "0500-12-25", "now": "2026-08-28T10:30", "expected": null},
79 {"id": "numeric-date-below-a-thousand", "input": "25/12/0500", "now": "2026-08-28T10:30", "expected": null},
80
81 {"id": "junk", "input": "wibble", "now": "2026-08-28T10:30", "expected": null},
82 {"id": "empty", "input": "", "now": "2026-08-28T10:30", "expected": null},
83 {"id": "blank", "input": " ", "now": "2026-08-28T10:30", "expected": null},
84 {"id": "dangling-modifier", "input": "next", "now": "2026-08-28T10:30", "expected": null},
85 {"id": "month-with-no-day", "input": "december", "now": "2026-08-28T10:30", "expected": null},
86 {"id": "leftover-number", "input": "25 dec 26 27", "now": "2026-08-28T10:30", "expected": null},
87 {"id": "trailing-junk", "input": "tomorrow wibble", "now": "2026-08-28T10:30", "expected": null},
88 {"id": "impossible-day", "input": "31 february", "now": "2026-08-28T10:30", "expected": null},
89 {"id": "impossible-clock", "input": "25:00", "now": "2026-08-28T10:30", "expected": null},
90 {"id": "impossible-minute", "input": "14:70", "now": "2026-08-28T10:30", "expected": null},
91
92 {"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"]},
93 {"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"]},
94 {"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"]},
95 {"id": "an-unambiguous-prefix-is-one-reading", "input": "5 jun", "now": "2026-08-28T10:30", "expected": "2027-06-05T09:00", "alternatives": []},
96 {"id": "a-prefix-month-still-ahead-keeps-this-year", "input": "25 dece", "now": "2026-08-28T10:30", "expected": "2026-12-25T09:00", "alternatives": []},
97
98 {"id": "a-word-of-the-vocabulary-completes", "input": "tomo", "now": "2026-08-28T10:30", "expected": "2026-08-29T09:00"},
99 {"id": "yesterday-half-typed", "input": "yest", "now": "2026-08-28T10:30", "expected": "2026-08-27T09:00"},
100 {"id": "midnight-half-typed", "input": "midn", "now": "2026-08-28T10:30", "expected": "2026-08-28T00:00"},
101 {"id": "a-weekday-half-typed", "input": "wedn", "now": "2026-08-28T10:30", "expected": "2026-09-02T09:00"},
102
103 {"id": "a-prefix-of-no-month-is-still-refused", "input": "5 z", "now": "2026-08-28T10:30", "expected": null},
104 {"id": "junk-that-is-not-a-prefix-is-still-junk", "input": "wibbl", "now": "2026-08-28T10:30", "expected": null},
105 {"id": "two-unfinished-words-complete-neither", "input": "qq 5 j", "now": "2026-08-28T10:30", "expected": null},
106 {"id": "a-month-prefix-with-no-day-is-refused", "input": "dece", "now": "2026-08-28T10:30", "expected": null}
107]
108