94 lines
3.0 KiB
Plaintext
94 lines
3.0 KiB
Plaintext
--- 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]")
|