diff options
| author | Beiri22 <beier1@hs-mittweida.de> | 2023-08-30 12:28:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-30 12:28:53 +0200 |
| commit | f616302496c824dd6a9fb2721c7df0c57b09708d (patch) | |
| tree | cc6f3fc95d876ea66eebdd6d99885b917e56c620 /tests/typ | |
| parent | 35c785ea118d13112c771e4c00e6f9a21dd6ba65 (diff) | |
Duration type, simple date-duration-calculations and comparisons (#1843)
Diffstat (limited to 'tests/typ')
| -rw-r--r-- | tests/typ/compiler/duration.typ | 104 | ||||
| -rw-r--r-- | tests/typ/compiler/methods.typ | 8 |
2 files changed, 112 insertions, 0 deletions
diff --git a/tests/typ/compiler/duration.typ b/tests/typ/compiler/duration.typ new file mode 100644 index 00000000..1d831a6f --- /dev/null +++ b/tests/typ/compiler/duration.typ @@ -0,0 +1,104 @@ +// Test durations. +// Ref: false + +--- +// Test negating durations. +#test(-duration(hours: 2), duration(hours: -2)) + +--- +// Test adding and subtracting durations. +#test(duration(weeks: 1, hours: 1), duration(weeks: 1) + duration(hours: 1)) +#test(duration(weeks: 1, hours: -1), duration(weeks: 1) - duration(hours: 1)) +#test(duration(days: 6, hours: 23), duration(weeks: 1) - duration(hours: 1)) + +--- +// Test adding and subtracting durations and dates. +#let d = datetime(day: 1, month: 1, year: 2000) +#let d2 = datetime(day: 1, month: 2, year: 2000) +#test(d + duration(weeks: 2), datetime(day: 15, month: 1, year: 2000)) +#test(d + duration(days: 3), datetime(day: 4, month: 1, year: 2000)) +#test(d + duration(weeks: 1, days: 3), datetime(day: 11, month: 1, year: 2000)) +#test(d2 + duration(days: -1), datetime(day: 31, month: 1, year: 2000)) +#test(d2 + duration(days: -3), datetime(day: 29, month: 1, year: 2000)) +#test(d2 + duration(weeks: -1), datetime(day: 25, month: 1, year: 2000)) +#test(d + duration(days: -1), datetime(day: 31, month: 12, year: 1999)) +#test(d + duration(weeks: 1, days: -7), datetime(day: 1, month: 1, year: 2000)) +#test(d2 - duration(days: 1), datetime(day: 31, month: 1, year: 2000)) +#test(d2 - duration(days: 3), datetime(day: 29, month: 1, year: 2000)) +#test(d2 - duration(weeks: 1), datetime(day: 25, month: 1, year: 2000)) +#test(d - duration(days: 1), datetime(day: 31, month: 12, year: 1999)) +#test(datetime(day: 31, month: 1, year: 2000) + duration(days: 1), d2) +#test( + datetime(day: 31, month: 12, year: 2000) + duration(days: 1), + datetime(day: 1, month: 1, year: 2001), +) + +--- +// Test adding and subtracting durations and times. +#let a = datetime(hour: 12, minute: 0, second: 0) +#test(a + duration(hours: 1, minutes: -60), datetime(hour: 12, minute: 0, second: 0)) +#test(a + duration(hours: 2), datetime(hour: 14, minute: 0, second: 0)) +#test(a + duration(minutes: 10), datetime(hour: 12, minute: 10, second: 0)) +#test(a + duration(seconds: 30), datetime(hour: 12, minute: 0, second: 30)) +#test(a + duration(hours: -2), datetime(hour: 10, minute: 0, second: 0)) +#test(a - duration(hours: 2), datetime(hour: 10, minute: 0, second: 0)) +#test(a + duration(minutes: -10), datetime(hour: 11, minute: 50, second: 0)) +#test(a - duration(minutes: 10), datetime(hour: 11, minute: 50, second: 0)) +#test(a + duration(seconds: -30), datetime(hour: 11, minute: 59, second: 30)) +#test(a - duration(seconds: 30), datetime(hour: 11, minute: 59, second: 30)) +#test( + a + duration(hours: 1, minutes: 13, seconds: 13), + datetime(hour: 13, minute: 13, second: 13), +) + +--- +// Test adding and subtracting durations and datetimes. +#test( + datetime(day: 1, month: 1, year: 2000, hour: 12, minute: 0, second: 0) + + duration(weeks: 1, days: 3, hours: -13, minutes: 10, seconds: -10 ), + datetime(day: 10, month: 1, year: 2000, hour: 23, minute: 9, second: 50), +) +#test( + datetime(day: 1, month: 1, year: 2000, hour: 12, minute: 0, second: 0) + + duration(weeks: 1, days: 3, minutes: 10) + - duration(hours: 13, seconds: 10), + datetime(day: 10, month: 1, year: 2000, hour: 23, minute: 9, second: 50), +) + +--- +// Test subtracting dates. +#let a = datetime(hour: 12, minute: 0, second: 0) +#let b = datetime(day: 1, month: 1, year: 2000) +#test(datetime(hour: 14, minute: 0, second: 0) - a, duration(hours: 2)) +#test(datetime(hour: 14, minute: 0, second: 0) - a, duration(minutes: 120)) +#test(datetime(hour: 13, minute: 0, second: 0) - a, duration(seconds: 3600)) +#test(datetime(day: 1, month: 2, year: 2000) - b, duration(days: 31)) +#test(datetime(day: 15, month: 1, year: 2000) - b, duration(weeks: 2)) + +--- +// Test multiplying and dividing durations with numbers. +#test(duration(minutes: 10) * 6, duration(hours: 1)) +#test(duration(minutes: 10) * 2, duration(minutes: 20)) +#test(duration(minutes: 10) * 2.5, duration(minutes: 25)) +#test(duration(minutes: 10) / 2, duration(minutes: 5)) +#test(duration(minutes: 10) / 2.5, duration(minutes: 4)) + +--- +// Test dividing durations with durations +#test(duration(minutes: 20) / duration(hours: 1), 1 / 3) +#test(duration(minutes: 20) / duration(minutes: 10), 2) +#test(duration(minutes: 20) / duration(minutes: 8), 2.5) + +--- +// Test comparing durations +#test(duration(minutes: 20) > duration(minutes: 10), true) +#test(duration(minutes: 20) >= duration(minutes: 10), true) +#test(duration(minutes: 10) < duration(minutes: 20), true) +#test(duration(minutes: 10) <= duration(minutes: 20), true) +#test(duration(minutes: 10) == duration(minutes: 10), true) +#test(duration(minutes: 10) != duration(minutes: 20), true) +#test(duration(minutes: 10) <= duration(minutes: 10), true) +#test(duration(minutes: 10) >= duration(minutes: 10), true) +#test(duration(minutes: 20) < duration(minutes: 10), false) +#test(duration(minutes: 20) <= duration(minutes: 10), false) +#test(duration(minutes: 20) == duration(minutes: 10), false) diff --git a/tests/typ/compiler/methods.typ b/tests/typ/compiler/methods.typ index c0ad5b1d..ace1dc60 100644 --- a/tests/typ/compiler/methods.typ +++ b/tests/typ/compiler/methods.typ @@ -198,3 +198,11 @@ #test(2deg.deg(), 2.0) #test(2.94deg.deg(), 2.94) #test(0rad.deg(), 0.0) + +--- +// 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); |
