diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2020-05-27 21:49:36 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2020-06-13 10:56:15 -0400 |
commit | d2791b046a28c232573f4d55fbeca5a6912dd635 (patch) | |
tree | 9e100b5569c02898d1a2cfb5cd087eef0bce3342 /test | |
parent | d8c1c48e78bd6cdfbee922c6bda4022c7d7cb9dd (diff) | |
download | calcurse-d2791b046a28c232573f4d55fbeca5a6912dd635.tar.gz calcurse-d2791b046a28c232573f4d55fbeca5a6912dd635.zip |
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 <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/data/ical-003.ical | 27 | ||||
-rw-r--r-- | test/data/ical-009.ical | 11 | ||||
-rwxr-xr-x | test/ical-003.sh | 77 | ||||
-rwxr-xr-x | test/ical-005.sh | 2 | ||||
-rwxr-xr-x | test/ical-009.sh | 10 |
5 files changed, 121 insertions, 6 deletions
diff --git a/test/data/ical-003.ical b/test/data/ical-003.ical index 599d24f..d715009 100644 --- a/test/data/ical-003.ical +++ b/test/data/ical-003.ical @@ -22,4 +22,31 @@ EXDATE:20000215T000000 EXDATE:20000223T000000 SUMMARY:Recurring appointment END:VEVENT +BEGIN:VEVENT +DTSTART:20200526T120000 +DURATION:PT1H17M0S +RRULE:FREQ=DAILY;UNTIL=20200529T130000 +SUMMARY: until May 29 2020\, 13:00 +END:VEVENT +BEGIN:VEVENT +DTSTART:20200526T120000 +DURATION:PT1H17M0S +RRULE:FREQ=DAILY;UNTIL=20200529T110000 +SUMMARY: until May 29 2020\, 11:00 +END:VEVENT +BEGIN:VEVENT +DTSTART:20200531T214500 +DURATION:PT15M0S +RRULE:FREQ=MONTHLY;COUNT=10 +EXDATE:20200731T214500,20210131T214500 +SUMMARY:monthly on 31th\, count 10\, exceptions 31/7/2020 and 31/1/2021 +END:VEVENT +BEGIN:VEVENT +DTSTAMP: +UID: +DTSTART;VALUE=DATE:20200502 +DTEND;VALUE=DATE:20200504 +DESCRIPTION:The first weekend in May is a two-day event. +SUMMARY:First weekend in May +END:VEVENT END:VCALENDAR diff --git a/test/data/ical-009.ical b/test/data/ical-009.ical index 1828417..b5a6575 100644 --- a/test/data/ical-009.ical +++ b/test/data/ical-009.ical @@ -111,6 +111,17 @@ RRULE:FREQ=MONTHLY;UNTIL=20201030 EXDATE;VALUE=DATE:20200606T120000Z SUMMARY:Invalid EXDATE value END:VEVENT +BEGIN:VEVENT +DTSTART:20200527T163000 +DTEND:20200528T163000 +DURATION:P1D +SUMMARY:Both end time and duration +END:VEVENT +BEGIN:VEVENT +DTSTART:20200527T163000 +DTEND:20200526T163000 +SUMMARY:End time before start +END:VEVENT BEGIN:VTODO SUMMARY:finally\, missing end of item END:VCALENDAR 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 <<EOD -Import process report: 0025 lines read -3 apps / 0 events / 0 todos / 0 skipped +Import process report: 0052 lines read +6 apps / 1 event / 0 todos / 0 skipped 01/01/00: - 00:00 -> 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" diff --git a/test/ical-005.sh b/test/ical-005.sh index f23fe65..a73b90f 100755 --- a/test/ical-005.sh +++ b/test/ical-005.sh @@ -7,6 +7,7 @@ if [ "$1" = 'actual' ]; then cp "$DATA_DIR/conf" .calcurse || exit 1 "$CALCURSE" -D "$PWD/.calcurse" -i "$DATA_DIR/ical-005.ical" "$CALCURSE" -D "$PWD/.calcurse" -s10/03/2013 -r3 + cat "$PWD/.calcurse/notes"/* rm -rf .calcurse || exit 1 elif [ "$1" = 'expected' ]; then cat <<EOD @@ -20,6 +21,7 @@ Import process report: 0023 lines read 10/04/13: * Two days +Import: multi-day event changed to one-day event EOD else ./run-test "$0" diff --git a/test/ical-009.sh b/test/ical-009.sh index c8c1c9c..f397044 100755 --- a/test/ical-009.sh +++ b/test/ical-009.sh @@ -17,10 +17,10 @@ if [ "$1" = 'actual' ]; then rm -rf .calcurse || exit 1 elif [ "$1" = 'expected' ]; then cat <<EOD -Import process report: 0116 lines read -2 apps / 0 events / 1 todo / 18 skipped +Import process report: 0127 lines read +2 apps / 0 events / 1 todo / 20 skipped VEVENT [12]: invalid or malformed event start time. -VEVENT [17]: recurrence frequency not recognized. +VEVENT [17]: rrule frequency not supported. VEVENT [23]: malformed summary line. VTODO [28]: item priority is invalid (must be between 0 and 9). VEVENT [32]: malformed exceptions line. @@ -36,7 +36,9 @@ VEVENT [89]: invalid end time value type. VEVENT [94]: invalid until format. VEVENT [100]: invalid exception date value type. VEVENT [107]: invalid exception. -VTODO [114]: The ical file seems to be malformed. The end of item was not found. +VEVENT [114]: either end or duration. +VEVENT [120]: end must be later than start. +VTODO [125]: The ical file seems to be malformed. The end of item was not found. 101 EOD else |