From d2791b046a28c232573f4d55fbeca5a6912dd635 Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Wed, 27 May 2020 21:49:36 +0200 Subject: Update import of basic recurrence rules Conversion of COUNT to UNTIL was a simple calculation which assumed one repetiton per period (day, week, month or year); it does not take exception days and invalid dates into account. Solved by a new function which returns the n'th occurrence of a recurrence rule. In calcurse UNTIL is interpreted as a day (DATE), in RFC 5545 as a time of day (DATE-TIME). This has implications when a recurrence rule has an occurrence on the UNTIL day, see comment in ical.c An "Import:" note is added when a multi-day event is imported and turned into a calcurse all-day event. Icalendar quotes in comments have been updated to RFC 5545. Signed-off-by: Lars Henriksen Signed-off-by: Lukas Fleischer --- test/ical-003.sh | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 2 deletions(-) (limited to 'test/ical-003.sh') diff --git a/test/ical-003.sh b/test/ical-003.sh index a0734ce..69cb4c3 100755 --- a/test/ical-003.sh +++ b/test/ical-003.sh @@ -1,4 +1,5 @@ #!/bin/sh +# Recurrence rules. . "${TEST_INIT:-./test-init.sh}" @@ -7,11 +8,13 @@ if [ "$1" = 'actual' ]; then cp "$DATA_DIR/conf" .calcurse || exit 1 "$CALCURSE" -D "$PWD/.calcurse" -i "$DATA_DIR/ical-003.ical" "$CALCURSE" -D "$PWD/.calcurse" -s01/01/2000 -r365 + "$CALCURSE" -D "$PWD/.calcurse" -s05/01/2020 --to 01/01/2022 + cat "$PWD/.calcurse/notes"/* rm -rf .calcurse || exit 1 elif [ "$1" = 'expected' ]; then cat < 01:30 Recurring appointment @@ -131,6 +134,76 @@ Import process report: 0025 lines read 02/29/00: - 00:00 -> 01:30 Recurring appointment +05/02/20: + * First weekend in May + +05/03/20: + * First weekend in May + +05/26/20: + - 12:00 -> 13:17 + until May 29 2020, 11:00 + - 12:00 -> 13:17 + until May 29 2020, 13:00 + +05/27/20: + - 12:00 -> 13:17 + until May 29 2020, 11:00 + - 12:00 -> 13:17 + until May 29 2020, 13:00 + +05/28/20: + - 12:00 -> 13:17 + until May 29 2020, 11:00 + - 12:00 -> 13:17 + until May 29 2020, 13:00 + +05/29/20: + - 12:00 -> 13:17 + until May 29 2020, 13:00 + +05/31/20: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +08/31/20: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +10/31/20: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +12/31/20: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +03/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +05/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +07/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +08/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +10/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 + +12/31/21: + - 21:45 -> 22:00 + monthly on 31th, count 10, exceptions 31/7/2020 and 31/1/2021 +The first weekend in May is a two-day event. +-- +Import: multi-day event changed to one-day event EOD else ./run-test "$0" -- cgit v1.2.3-54-g00ecf