diff options
| author | Laurenz <laurmaedje@gmail.com> | 2024-04-13 10:39:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-13 08:39:45 +0000 |
| commit | 020294fca9a7065d4b9cf4e677f606ebaaa29b00 (patch) | |
| tree | c0027ad22046e2726c22298461327823d6b88d53 /tests/suite/foundations/datetime.typ | |
| parent | 72dd79210602ecc799726fc096b078afbb47f299 (diff) | |
Better test runner (#3922)
Diffstat (limited to 'tests/suite/foundations/datetime.typ')
| -rw-r--r-- | tests/suite/foundations/datetime.typ | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/suite/foundations/datetime.typ b/tests/suite/foundations/datetime.typ new file mode 100644 index 00000000..b54c11f3 --- /dev/null +++ b/tests/suite/foundations/datetime.typ @@ -0,0 +1,93 @@ +--- datetime-constructor-empty --- +// Error: 2-12 at least one of date or time must be fully specified +#datetime() + +--- datetime-constructor-time-invalid --- +// Error: 2-42 time is invalid +#datetime(hour: 25, minute: 0, second: 0) + +--- datetime-constructor-date-invalid --- +// Error: 2-41 date is invalid +#datetime(year: 2000, month: 2, day: 30) + +--- datetime-display --- +// Test displaying of dates. +#test(datetime(year: 2023, month: 4, day: 29).display(), "2023-04-29") +#test(datetime(year: 2023, month: 4, day: 29).display("[year]"), "2023") +#test( + datetime(year: 2023, month: 4, day: 29) + .display("[year repr:last_two]"), + "23", +) +#test( + datetime(year: 2023, month: 4, day: 29) + .display("[year] [month repr:long] [day] [week_number] [weekday]"), + "2023 April 29 17 Saturday", +) + +// Test displaying of times +#test(datetime(hour: 14, minute: 26, second: 50).display(), "14:26:50") +#test(datetime(hour: 14, minute: 26, second: 50).display("[hour]"), "14") +#test( + datetime(hour: 14, minute: 26, second: 50) + .display("[hour repr:12 padding:none]"), + "2", +) +#test( + datetime(hour: 14, minute: 26, second: 50) + .display("[hour], [minute], [second]"), "14, 26, 50", +) + +// Test displaying of datetimes +#test( + datetime(year: 2023, month: 4, day: 29, hour: 14, minute: 26, second: 50).display(), + "2023-04-29 14:26:50", +) + +// Test getting the year/month/day etc. of a datetime +#let d = datetime(year: 2023, month: 4, day: 29, hour: 14, minute: 26, second: 50) +#test(d.year(), 2023) +#test(d.month(), 4) +#test(d.weekday(), 6) +#test(d.day(), 29) +#test(d.hour(), 14) +#test(d.minute(), 26) +#test(d.second(), 50) + +#let e = datetime(year: 2023, month: 4, day: 29) +#test(e.hour(), none) +#test(e.minute(), none) +#test(e.second(), none) + +// Test today +#test(datetime.today().display(), "1970-01-01") +#test(datetime.today(offset: auto).display(), "1970-01-01") +#test(datetime.today(offset: 2).display(), "1970-01-01") + +--- datetime-ordinal --- +// Test date methods. +#test(datetime(day: 1, month: 1, year: 2000).ordinal(), 1); +#test(datetime(day: 1, month: 3, year: 2000).ordinal(), 31 + 29 + 1); +#test(datetime(day: 31, month: 12, year: 2000).ordinal(), 366); +#test(datetime(day: 1, month: 3, year: 2001).ordinal(), 31 + 28 + 1); +#test(datetime(day: 31, month: 12, year: 2001).ordinal(), 365); + +--- datetime-display-missing-closing-bracket --- +// Error: 27-34 missing closing bracket for bracket at index 0 +#datetime.today().display("[year") + +--- datetime-display-invalid-component --- +// Error: 27-38 invalid component name 'nothing' at index 1 +#datetime.today().display("[nothing]") + +--- datetime-display-invalid-modifier --- +// Error: 27-50 invalid modifier 'wrong' at index 6 +#datetime.today().display("[year wrong:last_two]") + +--- datetime-display-expected-component --- +// Error: 27-33 expected component name at index 2 +#datetime.today().display(" []") + +--- datetime-display-insufficient-information --- +// Error: 2-36 failed to format datetime (insufficient information) +#datetime.today().display("[hour]") |
