aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2023-02-23 03:00:20 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2023-02-23 04:04:04 +0100
commit2de493b798997027758fb3540c796a3f06f9ade1 (patch)
tree98a2fe150732a34554454c0cf873ece1481f0abb
parentChange group-by to return direct pairs. (diff)
downloadcalp-2de493b798997027758fb3540c796a3f06f9ade1.tar.gz
calp-2de493b798997027758fb3540c796a3f06f9ade1.tar.xz
Start using (vcomponent create) in tests.
This allows us to focus on what we are testing, instead of on the parser in question. It also makes the code parser-agnostic.
-rw-r--r--tests/test/add-and-save.scm113
-rw-r--r--tests/test/annoying-events.scm20
-rw-r--r--tests/test/recurrence-advanced.scm382
-rw-r--r--tests/test/vcomponent-control.scm32
-rw-r--r--tests/test/vcomponent-datetime.scm20
-rw-r--r--tests/test/vcomponent.scm10
-rw-r--r--tests/test/xcal.scm43
7 files changed, 369 insertions, 251 deletions
diff --git a/tests/test/add-and-save.scm b/tests/test/add-and-save.scm
index 1ab6f660..70b8cce2 100644
--- a/tests/test/add-and-save.scm
+++ b/tests/test/add-and-save.scm
@@ -3,71 +3,75 @@
:use-module (srfi srfi-88)
:use-module (hnh util)
:use-module (datetime)
+ :use-module (datetime timespec)
;; :use-module ((vcomponent) :select (prop))
:use-module ((vcomponent base) :select (prop type children make-vcomponent))
:use-module ((srfi srfi-1) :select (find))
:use-module ((vcomponent formats vdir save-delete) :select (save-event))
- :use-module ((vcomponent formats xcal parse) :select (sxcal->vcomponent))
+ :use-module ((vcomponent create)
+ :select (with-parameters
+ vcalendar vevent
+ vtimezone standard daylight))
+ :use-module (vcomponent recurrence)
:use-module ((vcomponent util instance methods)
:select (add-calendars
add-and-save-event
remove-event
)))
-;; TODO is this how I want to format direct components?
-
(define timezone
- '(vtimezone
- (properties (tzid (text "Europe/Stockholm")))
- (components
- (standard
- (properties
- (tzoffsetto (utc-offset "+0100"))
- (dtstart (date-time "1996-10-27T01:00:00"))
- (tzname (text "CET"))
- (tzoffsetfrom (utc-offset "+0200"))
- (rrule (recur (freq "YEARLY")
- (interval "1")
- ((byday "-1SU"))
- ((bymonth 10))))))
- (daylight
- (properties
- (tzoffsetto (utc-offset "+0200"))
- (dtstart (date-time "1981-03-29T01:00:00"))
- (tzname (text "CEST"))
- (tzoffsetfrom (utc-offset "+0000"))
- (rrule (recur (freq "YEARLY")
- (interval "1")
- ((byday "-1SU"))
- ((bymonth 3)))))))) )
+ (vtimezone
+ tzid: "Europe/Stockholm"
+ (list
+ (standard
+ tzoffsetto: (parse-time-spec "01:00")
+ dtstart: #1996-10-27T01:00:00
+ tzname: "CET"
+ tzoffsetfrom: (parse-time-spec "02:00")
+ rrule: (make-recur-rule
+ freq: 'YEARLY
+ interval: 1
+ byday: (list (cons -1 sun))
+ bymonth: (list 10)
+ ))
+ (daylight
+ tzoffsetto: (parse-time-spec "02:00")
+ dtstart: #1981-03-29T01:00:00
+ tzname: "CEST"
+ tzoffsetfrom: (parse-time-spec "00:00")
+ rrule: (make-recur-rule
+ freq: 'YEARLY
+ interval: 1
+ byday: (list (cons -1 sun))
+ bymonth: (list 3))))))
(define ev
- (sxcal->vcomponent
- '(vevent
- (properties
- (uid (text "3da506ad-8d27-4810-94b3-6ab341baa1f2"))
- (summary (text "Test Event #1"))
- (dtstart
- (parameters (tzid (text "Europe/Stockholm")))
- (date-time "2021-12-21T10:30:00"))
- (dtstamp (date-time "2021-12-21T14:10:56Z"))
- (dtend (parameters (tzid (text "Europe/Stockholm")))
- (date-time "2021-12-21T11:45:00"))))))
+ (vevent
+ uid: "3da506ad-8d27-4810-94b3-6ab341baa1f2"
+ summary: "Test Event #1"
+ dtstart: (with-parameters
+ tzid: "Europe/Stockholm"
+ #2021-12-21T10:30:00)
+ dtstamp: #2021-12-21T14:10:56Z
+ dtend: (with-parameters
+ tzid: "Europe/Stockholm"
+ #2021-12-21T11:45:00)))
(define rep-ev
- (sxcal->vcomponent
- '(vevent
- (properties
- (uid (text "4ebd6632-d192-4bf4-a33a-7a8388185914"))
- (summary (text "Repeating Test Event #1"))
- (rrule (recur (freq "DAILY")))
- (dtstart
- (parameters (tzid (text "Europe/Stockholm")))
- (date-time "2021-12-21T10:30:00"))
- (dtstamp (date-time "2021-12-21T14:10:56Z"))
- (dtend (parameters (tzid (text "Europe/Stockholm")))
- (date-time "2021-12-21T11:45:00"))))))
-
+ (vevent
+ uid: "4ebd6632-d192-4bf4-a33a-7a8388185914"
+ summary: "Repeating Test Event #1"
+ rrule: (make-recur-rule freq: 'DAILY)
+ dtstart: (with-parameters
+ tzid: "Europe/Stockholm"
+ #2021-12-21T10:30:00)
+ dtstamp: #2021-12-21T14:10:56Z
+ dtend: (with-parameters
+ tzid: "Europe/Stockholm"
+ #2021-12-21T11:45:00)
+ ))
+
+;; TODO tmpnam is deprecated
(define directory (tmpnam))
(define event-object ((@ (oop goops) make)
@@ -76,10 +80,11 @@
(mkdir directory)
(format #t "Using ~a~%" directory)
-(define calendar (make-vcomponent 'VCALENDAR))
-
-(set! (prop calendar '-X-HNH-SOURCETYPE) 'vdir
- (prop calendar '-X-HNH-DIRECTORY) directory)
+(define calendar
+ (vcalendar
+ #:-X-HNH-SOURCETYPE 'vdir
+ #:-X-HNH-DIRECTORY directory
+ ))
(add-calendars event-object calendar)
diff --git a/tests/test/annoying-events.scm b/tests/test/annoying-events.scm
index 4e5aa07d..d41ee450 100644
--- a/tests/test/annoying-events.scm
+++ b/tests/test/annoying-events.scm
@@ -12,32 +12,26 @@
:select (extract prop make-vcomponent))
:use-module ((vcomponent datetime) :select (event-overlaps?))
:use-module ((datetime) :select (date date+ date<))
- :use-module ((hnh util) :select (set!)))
+ :use-module ((hnh util) :select (set!))
+ :use-module (vcomponent create)
+ :use-module (vcomponent base))
-;; TODO remove this
-(define* (event key: summary dtstart dtend)
- (define ev (make-vcomponent 'VEVENT))
- (set! (prop ev 'SUMMARY) summary
- (prop ev 'DTSTART) dtstart
- (prop ev 'DTEND) dtend)
- ev)
-(define start
- #2021-11-01)
+(define start #2021-11-01)
(define end (date+ start (date day: 8)))
(define ev-set
(stream
- (event ; should be part of the result
+ (vevent ; should be part of the result
summary: "A"
dtstart: #2021-10-01
dtend: #2021-12-01)
- (event ; should NOT be part of the result
+ (vevent ; should NOT be part of the result
summary: "B"
dtstart: #2021-10-10
dtend: #2021-10-11)
- (event ; should also be part of the result
+ (vevent ; should also be part of the result
summary: "C"
dtstart: #2021-11-02
dtend: #2021-11-03)))
diff --git a/tests/test/recurrence-advanced.scm b/tests/test/recurrence-advanced.scm
index a291cc17..cc096c94 100644
--- a/tests/test/recurrence-advanced.scm
+++ b/tests/test/recurrence-advanced.scm
@@ -14,8 +14,8 @@
(define-module (test recurrence-advanced)
:use-module (srfi srfi-64)
:use-module (srfi srfi-88)
- :use-module ((vcomponent recurrence parse)
- :select (parse-recurrence-rule))
+ :use-module ((vcomponent recurrence)
+ :select (make-recur-rule))
:use-module ((vcomponent recurrence generate)
:select (generate-recurrence-set))
:use-module ((vcomponent recurrence display)
@@ -24,11 +24,13 @@
:select (count until))
:use-module ((vcomponent base)
:select (make-vcomponent prop prop* extract make-vline))
+ :use-module (vcomponent create)
:use-module ((datetime)
- :select (parse-ics-datetime
- datetime
+ :select (datetime
time
date
+ jan feb mar apr may jun jul aug sep oct nov dec
+ mon tue wed thu fri sat sun
datetime->string))
:use-module ((hnh util) :select (-> set!))
:use-module ((srfi srfi-41) :select (stream->list))
@@ -63,36 +65,16 @@
;; TODO possibly test with other languages
(format-recurrence-rule (prop comp 'RRULE) 'sv)))
-;; TODO remove this makeshift parser (and all others), and replace them with a
-;; properly specified syntax for easily creating objects.
-(define (vevent . rest)
- (define v (make-vcomponent 'VEVENT))
- (let loop ((rem rest))
- (unless
- (null? rem)
- (let ((symb (-> (car rem)
- keyword->string
- string-upcase
- string->symbol)))
- ;; TODO extend to allow dates (without time)
- (case symb
- ((EXDATE RDATE) (set! (prop* v symb)
- (map (lambda (dt) (make-vline symb dt (make-hash-table)))
- (map parse-ics-datetime (cadr rem)))))
- ((DTSTART) (set! (prop v symb) (parse-ics-datetime (cadr rem))))
- ((RRULE) (set! (prop v symb) (parse-recurrence-rule (cadr rem))))
- (else (set! (prop v symb) (cadr rem)))))
- (loop (cddr rem))))
- v)
-
(map run-test
(list (vevent
summary:
"Daily for 10 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=DAILY;COUNT=10"
+ (make-recur-rule
+ freq: 'DAILY
+ count: 10)
x-summary:
"dagligen, totalt 10 gånger"
x-set:
@@ -110,9 +92,11 @@
summary:
"Daily until December 24, 1997"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=DAILY;UNTIL=19971224T000000Z"
+ (make-recur-rule
+ freq: 'DAILY
+ until: #1997-12-24T00:00:00Z)
x-summary:
"dagligen, till och med den 24 december, 1997 kl. 0:00"
x-set:
@@ -233,9 +217,11 @@
summary:
"Every other day - forever"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=DAILY;INTERVAL=2"
+ (make-recur-rule
+ freq: 'DAILY
+ interval: 2)
x-summary:
"varannan dag"
x-set:
@@ -263,9 +249,12 @@
summary:
"Every 10 days, 5 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=DAILY;INTERVAL=10;COUNT=5"
+ (make-recur-rule
+ freq: 'DAILY
+ interval: 10
+ count: 5)
x-summary:
"var tionde dag, totalt 5 gånger"
x-set:
@@ -278,9 +267,13 @@
summary:
"Every day in January, for 3 years (alt 1)"
dtstart:
- "19980101T090000"
+ #1998-01-01T09:00:00
rrule:
- "FREQ=YEARLY;UNTIL=20000131T140000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA"
+ (make-recur-rule
+ freq: 'YEARLY
+ until: #2000-01-31T14:00:00Z
+ bymonth: (list jan)
+ byday: (list sun mon tue wed thu fri sat))
x-summary:
"varje lördag, fredag, torsdag, onsdag, tisdag, måndag & söndag i januari, årligen, till och med den 31 januari, 2000 kl. 14:00"
x-set:
@@ -381,9 +374,12 @@
summary:
"Every day in January, for 3 years (alt 2)"
dtstart:
- "19980101T090000"
+ #1998-01-01T09:00:00
rrule:
- "FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1"
+ (make-recur-rule
+ freq: 'DAILY
+ until: #2000-01-31T14:00:00Z
+ bymonth: 1)
x-summary:
"dagligen, till och med den 31 januari, 2000 kl. 14:00"
x-set:
@@ -484,9 +480,11 @@
summary:
"Weekly for 10 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;COUNT=10"
+ (make-recur-rule
+ freq: 'WEEKLY
+ count: 10)
x-summary:
"varje vecka, totalt 10 gånger"
x-set:
@@ -504,9 +502,11 @@
summary:
"Weekly until December 24, 1997"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;UNTIL=19971224T000000Z"
+ (make-recur-rule
+ freq: 'WEEKLY
+ until: #1997-12-24T00:00:00Z)
x-summary:
"varje vecka, till och med den 24 december, 1997 kl. 0:00"
x-set:
@@ -531,9 +531,12 @@
summary:
"Every other week - forever"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;INTERVAL=2;WKST=SU"
+ (make-recur-rule
+ freq: 'WEEKLY
+ interval: 2
+ wkst: sun)
x-summary:
"varannan vecka"
x-set:
@@ -561,9 +564,13 @@
summary:
"Weekly on Tuesday and Thursday for five weeks (alt 1)"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH"
+ (make-recur-rule
+ freq: 'WEEKLY
+ until: #1997-10-07T00:00:00Z
+ wkst: sun
+ byday: (list tue thu))
x-summary:
"varje tisdag & torsdag, till och med den 07 oktober, 1997 kl. 0:00"
x-set:
@@ -581,9 +588,13 @@
summary:
"Weekly on Tuesday and Thursday for five weeks (alt 2)"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH"
+ (make-recur-rule
+ freq: 'WEEKLY
+ count: 10
+ wkst: sun
+ byday: (list tue thu))
x-summary:
"varje tisdag & torsdag, totalt 10 gånger"
x-set:
@@ -601,9 +612,14 @@
summary:
"Every other week on Monday, Wednesday, and Friday until December 24, 1997, starting on Monday, September 1, 1997:"
dtstart:
- "19970901T090000"
+ #1997-09-01T09:00:00
rrule:
- "FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR"
+ (make-recur-rule
+ freq: 'WEEKLY
+ interval: 2
+ until: #1997-12-24T00:00:00Z
+ wkst: sun
+ byday: (list mon wed fri))
x-summary:
"varannan måndag, onsdag & fredag, till och med den 24 december, 1997 kl. 0:00"
x-set:
@@ -636,9 +652,14 @@
summary:
"Every other week on Tuesday and Thursday, for 8 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH"
+ (make-recur-rule
+ freq: 'WEEKLY
+ interval: 2
+ count: 8
+ wkst: sun
+ byday: (list tue thu))
x-summary:
"varannan tisdag & torsdag, totalt 8 gånger"
x-set:
@@ -654,9 +675,12 @@
summary:
"Monthly on the first Friday for 10 occurrences"
dtstart:
- "19970905T090000"
+ #1997-09-05T09:00:00
rrule:
- "FREQ=MONTHLY;COUNT=10;BYDAY=1FR"
+ (make-recur-rule
+ freq: 'MONTHLY
+ count: 10
+ byday: (list (cons 1 fri)))
x-summary:
"första fredagen varje månad, totalt 10 gånger"
x-set:
@@ -674,9 +698,12 @@
summary:
"Monthly on the first Friday until December 24, 1997"
dtstart:
- "19970905T090000"
+ #1997-09-05T09:00:00
rrule:
- "FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR"
+ (make-recur-rule
+ freq: 'MONTHLY
+ until: #1997-12-24T00:00:00Z
+ byday: (list (cons 1 fri)))
x-summary:
"första fredagen varje månad, till och med den 24 december, 1997 kl. 0:00"
x-set:
@@ -688,9 +715,14 @@
summary:
"Every other month on the first and last Sunday of the month for 10 occurrences"
dtstart:
- "19970907T090000"
+ #1997-09-07T09:00:00
rrule:
- "FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU"
+ (make-recur-rule
+ freq: 'MONTHLY
+ interval: 2
+ count: 10
+ byday: (list (cons 1 sun)
+ (cons -1 sun)))
x-summary:
"första söndagen samt sista söndagen varannan månad, totalt 10 gånger"
x-set:
@@ -708,9 +740,12 @@
summary:
"Monthly on the second-to-last Monday of the month for 6 months"
dtstart:
- "19970922T090000"
+ #1997-09-22T09:00:00
rrule:
- "FREQ=MONTHLY;COUNT=6;BYDAY=-2MO"
+ (make-recur-rule
+ freq: 'MONTHLY
+ count: 6
+ byday: (list (cons -2 mon)))
x-summary:
"näst sista måndagen varje månad, totalt 6 gånger"
x-set:
@@ -724,9 +759,11 @@
summary:
"Monthly on the third-to-the-last day of the month, forever"
dtstart:
- "19970928T090000"
+ #1997-09-28T09:00:00
rrule:
- "FREQ=MONTHLY;BYMONTHDAY=-3"
+ (make-recur-rule
+ freq: 'MONTHLY
+ bymonthday: (list -3))
x-summary:
"den tredje sista varje månad"
x-set:
@@ -754,9 +791,12 @@
summary:
"Monthly on the 2nd and 15th of the month for 10 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15"
+ (make-recur-rule
+ freq: 'MONTHLY
+ count: 10
+ bymonthday: (list 2 15))
x-summary:
"den andre & femtonde varje månad, totalt 10 gånger"
x-set:
@@ -774,9 +814,12 @@
summary:
"Monthly on the first and last day of the month for 10 occurrences"
dtstart:
- "19970930T090000"
+ #1997-09-30T09:00:00
rrule:
- "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1"
+ (make-recur-rule
+ freq: 'MONTHLY
+ count: 10
+ bymonthday: (list 1 -1))
x-summary:
"den förste & sista varje månad, totalt 10 gånger"
x-set:
@@ -794,9 +837,13 @@
summary:
"Every 18 months on the 10th thru 15th of the month for 10 occurrences"
dtstart:
- "19970910T090000"
+ #1997-09-10T09:00:00
rrule:
- "FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15"
+ (make-recur-rule
+ freq: 'MONTHLY
+ interval: 18
+ count: 10
+ bymonthday: (list 10 11 12 13 14 15))
x-summary:
"den tionde, elfte, tolfte, trettonde, fjortonde & femtonde var artonde månad, totalt 10 gånger"
x-set:
@@ -814,9 +861,12 @@
summary:
"Every Tuesday, every other month"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=MONTHLY;INTERVAL=2;BYDAY=TU"
+ (make-recur-rule
+ freq: 'MONTHLY
+ interval: 2
+ byday: (list tue))
x-summary:
"varje tisdag varannan månad"
x-set:
@@ -844,9 +894,12 @@
summary:
"Yearly in June and July for 10 occurrences:\n: Since none of the BYDAY, BYMONTHDAY, or BYYEARDAY\nonents are specified, the day is gotten from \"DTSTART\""
dtstart:
- "19970610T090000"
+ #1997-06-10T09:00:00
rrule:
- "FREQ=YEARLY;COUNT=10;BYMONTH=6,7"
+ (make-recur-rule
+ freq: 'YEARLY
+ count: 10
+ bymonth: (list 6 7))
x-summary:
"juni & juli, årligen, totalt 10 gånger"
x-set:
@@ -864,9 +917,13 @@
summary:
"Every other year on January, February, and March for 10 occurrences"
dtstart:
- "19970310T090000"
+ #1997-03-10T09:00:00
rrule:
- "FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3"
+ (make-recur-rule
+ freq: 'YEARLY
+ interval: 2
+ count: 10
+ bymonth: (list jan feb mar))
x-summary:
"januari, februari & mars vartannat år, totalt 10 gånger"
x-set:
@@ -884,9 +941,13 @@
summary:
"Every third year on the 1st, 100th, and 200th day for 10 occurrences"
dtstart:
- "19970101T090000"
+ #1997-01-01T09:00:00
rrule:
- "FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200"
+ (make-recur-rule
+ freq: 'YEARLY
+ interval: 3
+ count: 10
+ byyearday: (list 1 100 200))
x-summary:
"dag 1, 100 & 200 vart tredje år, totalt 10 gånger"
x-set:
@@ -904,9 +965,11 @@
summary:
"Every 20th Monday of the year, forever"
dtstart:
- "19970519T090000"
+ #1997-05-19T09:00:00
rrule:
- "FREQ=YEARLY;BYDAY=20MO"
+ (make-recur-rule
+ freq: 'YEARLY
+ byday: (list (cons 20 mon)))
x-summary:
"tjugonde måndagen, årligen"
x-set:
@@ -934,9 +997,12 @@
summary:
"Monday of week number 20 (where the default start of the week is Monday), forever"
dtstart:
- "19970512T090000"
+ #1997-05-12T09:00:00
rrule:
- "FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO"
+ (make-recur-rule
+ freq: 'YEARLY
+ byweekno: (list 20)
+ byday: (list mon))
x-summary:
"varje måndag v.20, årligen"
x-set:
@@ -964,9 +1030,12 @@
summary:
"Every Thursday in March, forever"
dtstart:
- "19970313T090000"
+ #1997-03-13T09:00:00
rrule:
- "FREQ=YEARLY;BYMONTH=3;BYDAY=TH"
+ (make-recur-rule
+ freq: 'YEARLY
+ bymonth: (list mar)
+ byday: (list thu))
x-summary:
"varje torsdag i mars, årligen"
x-set:
@@ -994,9 +1063,12 @@
summary:
"Every Thursday, but only during June, July, and August, forever"
dtstart:
- "19970605T090000"
+ #1997-06-05T09:00:00
rrule:
- "FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8"
+ (make-recur-rule
+ freq: 'YEARLY
+ byday: (list thu)
+ bymonth: (list 6 7 8))
x-summary:
"varje torsdag i juni, juli & augusti, årligen"
x-set:
@@ -1024,11 +1096,15 @@
summary:
"Every Friday the 13th, forever"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
exdate:
- (list "19970902T090000")
+ (as-list
+ (list #1997-09-02T09:00:00))
rrule:
- "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13"
+ (make-recur-rule
+ freq: 'MONTHLY
+ byday: (list fri)
+ bymonthday: (list 13))
x-summary:
"varje fredag den trettonde varje månad"
x-set:
@@ -1056,9 +1132,12 @@
summary:
"The first Saturday that follows the first Sunday of the month, forever"
dtstart:
- "19970913T090000"
+ #1997-09-13T09:00:00
rrule:
- "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13"
+ (make-recur-rule
+ freq: 'MONTHLY
+ byday: (list sat)
+ bymonthday: (list 7 8 9 10 11 12 13))
x-summary:
"varje lördag den sjunde, åttonde, nionde, tionde, elfte, tolfte & trettonde varje månad"
x-set:
@@ -1086,9 +1165,14 @@
summary:
"Every 4 years, the first Tuesday after a Monday in November,\nver (U.S. Presidential Election day)"
dtstart:
- "19961105T090000"
+ #1996-11-05T09:00:00
rrule:
- "FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8"
+ (make-recur-rule
+ freq: 'YEARLY
+ interval: 4
+ bymonth: (list nov)
+ byday: (list tue)
+ bymonthday: (list 2 3 4 5 6 7 8))
x-summary:
"varje tisdag den andre, tredje, fjärde, femte, sjätte, sjunde eller åttonde i november vart fjärde år"
x-set:
@@ -1116,9 +1200,13 @@
summary:
"The third instance into the month of one of Tuesday, Wednesday, or Thursday, for the next 3 months"
dtstart:
- "19970904T090000"
+ #1997-09-04T09:00:00
rrule:
- "FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3"
+ (make-recur-rule
+ freq: 'MONTHLY
+ count: 3
+ byday: (list tue wed thu)
+ bysetpos: (list 3))
x-summary:
"NOT YET IMPLEMENTED"
x-set:
@@ -1129,9 +1217,12 @@
summary:
"The second-to-last weekday of the month"
dtstart:
- "19970929T090000"
+ #1997-09-29T09:00:00
rrule:
- "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2"
+ (make-recur-rule
+ freq: 'MONTHLY
+ byday: (list mon tue wed thu fri)
+ bysetpos: (list -2))
x-summary:
"NOT YET IMPLEMENTED"
x-set:
@@ -1144,9 +1235,12 @@
summary:
"Every 3 hours from 9:00 AM to 5:00 PM on a specific day"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z"
+ (make-recur-rule
+ freq: 'HOURLY
+ interval: 3
+ until: #1997-09-02T17:00:00Z)
x-summary:
"var tredje timme, till och med den 02 september, 1997 kl. 17:00"
x-set:
@@ -1157,9 +1251,12 @@
summary:
"Every 15 minutes for 6 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=MINUTELY;INTERVAL=15;COUNT=6"
+ (make-recur-rule
+ freq: 'MINUTELY
+ interval: 15
+ count: 6)
x-summary:
"varje kvart, totalt 6 gånger"
x-set:
@@ -1173,9 +1270,12 @@
summary:
"Every hour and a half for 4 occurrences"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=MINUTELY;INTERVAL=90;COUNT=4"
+ (make-recur-rule
+ freq: 'MINUTELY
+ interval: 90
+ count: 4)
x-summary:
"var sjätte kvart, totalt 4 gånger"
x-set:
@@ -1187,9 +1287,12 @@
summary:
"Every 20 minutes from 9:00 AM to 4:40 PM every day (alt 1)"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40"
+ (make-recur-rule
+ freq: 'DAILY
+ byhour: (list 9 10 11 12 13 14 15 16)
+ byminute: (list 0 20 40))
x-summary:
"dagligen kl. 09:00, 09:20, 09:40, 10:00, 10:20, 10:40, 11:00, 11:20, 11:40, 12:00, 12:20, 12:40, 13:00, 13:20, 13:40, 14:00, 14:20, 14:40, 15:00, 15:20, 15:40, 16:00, 16:20 & 16:40"
x-set:
@@ -1217,9 +1320,12 @@
summary:
"Every 20 minutes from 9:00 AM to 4:40 PM every day (alt 2)"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
rrule:
- "FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16"
+ (make-recur-rule
+ freq: 'MINUTELY
+ interval: 20
+ byhour: (list 9 10 11 12 13 14 15 16))
x-summary:
"var tjugonde minut kl. 9, 10, 11, 12, 13, 14, 15 & 16"
x-set:
@@ -1247,9 +1353,14 @@
summary:
"An example where the days generated makes a difference because of WKST"
dtstart:
- "19970805T090000"
+ #1997-08-05T09:00:00
rrule:
- "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO"
+ (make-recur-rule
+ freq: 'WEEKLY
+ interval: 2
+ count: 4
+ byday: (list tue sun)
+ wkst: mon)
x-summary:
"varannan tisdag & söndag, totalt 4 gånger"
x-set:
@@ -1261,9 +1372,14 @@
summary:
"changing only WKST from MO to SU, yields different results.."
dtstart:
- "19970805T090000"
+ #1997-08-05T09:00:00
rrule:
- "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU"
+ (make-recur-rule
+ freq: 'WEEKLY
+ interval: 2
+ count: 4
+ byday: (list tue sun)
+ wkst: sun)
x-summary:
"varannan tisdag & söndag, totalt 4 gånger"
x-set:
@@ -1275,9 +1391,12 @@
summary:
"An example where an invalid date (i.e., February 30) is ignored"
dtstart:
- "20070115T090000"
+ #2007-01-15T09:00:00
rrule:
- "FREQ=MONTHLY;BYMONTHDAY=15,30;COUNT=5"
+ (make-recur-rule
+ freq: 'MONTHLY
+ bymonthday: (list 15 30)
+ count: 5)
x-summary:
"den femtonde & tretionde varje månad, totalt 5 gånger"
x-set:
@@ -1290,11 +1409,15 @@
summary:
"Every Friday & Wednesday the 13th, forever"
dtstart:
- "19970902T090000"
+ #1997-09-02T09:00:00
exdate:
- (list "19970902T090000")
+ (as-list
+ (list #1997-09-02T09:00:00))
rrule:
- "FREQ=MONTHLY;BYDAY=FR,WE;BYMONTHDAY=13"
+ (make-recur-rule
+ freq: 'MONTHLY
+ byday: (list fri wed)
+ bymonthday: (list 13))
x-summary:
"varje onsdag & fredag den trettonde varje månad"
x-set:
@@ -1322,9 +1445,12 @@
summary:
"Monday & Wednesday of week number 20 (where the default start of the week is Monday), forever"
dtstart:
- "19970512T090000"
+ #1997-05-12T09:00:00
rrule:
- "FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO,WE"
+ (make-recur-rule
+ freq: 'YEARLY
+ byweekno: (list 20)
+ byday: (list mon wed))
x-summary:
"varje onsdag & måndag v.20, årligen"
x-set:
@@ -1350,8 +1476,8 @@
#2006-05-17T09:00:00))
(vevent
summary: "Each second, for ever"
- dtstart: "20201010T100000"
- rrule: "FREQ=SECONDLY"
+ dtstart: #2020-10-10T10:00:00
+ rrule: (make-recur-rule freq: 'SECONDLY)
x-summary: "varje sekund"
x-set: (list #2020-10-10T10:00:00
#2020-10-10T10:00:01
@@ -1377,9 +1503,9 @@
;; instances may be present.
(vevent
summary: "Exdates are applied AFTER rrule's"
- dtstart: "20220610T100000"
- rrule: "FREQ=DAILY;COUNT=5"
- exdate: (list "20220612T100000")
+ dtstart: #2022-06-10T10:00:00
+ rrule: (make-recur-rule freq: 'DAILY count: 5)
+ exdate: (as-list (list #2022-06-12T10:00:00))
x-summary: "dagligen, totalt 5 gånger"
x-set: (list #2022-06-10T10:00:00
#2022-06-11T10:00:00
@@ -1389,9 +1515,9 @@
))
(vevent
summary: "RDATE:s add to the recurrence rule"
- dtstart: "20220610T100000"
- rrule: "FREQ=DAILY;COUNT=5"
- rdate: (list "20220620T100000")
+ dtstart: #2022-06-10T10:00:00
+ rrule: (make-recur-rule freq: 'DAILY count: 5)
+ rdate: (as-list (list #2022-06-20T10:00:00))
x-summary: "dagligen, totalt 5 gånger"
x-set: (list #2022-06-10T10:00:00
#2022-06-11T10:00:00
@@ -1403,10 +1529,10 @@
)
(vevent
summary: "RDATE:s add to the recurrence rule"
- dtstart: "20220610T100000"
- rrule: "FREQ=DAILY;COUNT=5"
- exdate: (list "20220620T100000")
- rdate: (list "20220620T100000")
+ dtstart: #2022-06-10T10:00:00
+ rrule: (make-recur-rule freq: 'DAILY count: 5)
+ exdate: (as-list (list #2022-06-20T10:00:00))
+ rdate: (as-list (list #2022-06-20T10:00:00))
x-summary: "dagligen, totalt 5 gånger"
x-set: (list #2022-06-10T10:00:00
#2022-06-11T10:00:00
diff --git a/tests/test/vcomponent-control.scm b/tests/test/vcomponent-control.scm
index f408c8b4..6ab38996 100644
--- a/tests/test/vcomponent-control.scm
+++ b/tests/test/vcomponent-control.scm
@@ -5,32 +5,32 @@
(define-module (test vcomponent-control)
:use-module (srfi srfi-64)
:use-module (srfi srfi-88)
+ :use-module ((vcomponent create))
:use-module ((vcomponent util control)
:select (with-replaced-properties))
:use-module ((vcomponent formats ical parse)
:select (parse-calendar))
:use-module ((vcomponent base) :select (prop)))
-(define ev
- (call-with-input-string
- "BEGIN:DUMMY\nX-KEY:value\nEND:DUMMY"
- parse-calendar))
+(define ev (vcomponent 'DUMMY x-key: "value"))
-;; Test that temoraries are set and restored
-(test-equal "value" (prop ev 'X-KEY))
+(test-group "With replaced properties"
+ ;; Test that temoraries are set and restored
+ (test-equal "value" (prop ev 'X-KEY))
-(with-replaced-properties
- (ev (X-KEY "other"))
- (test-equal "other" (prop ev 'X-KEY)))
+ (with-replaced-properties
+ (ev (X-KEY "other"))
+ (test-equal "other" (prop ev 'X-KEY)))
-(test-equal "value" (prop ev 'X-KEY))
+ (test-equal "value" (prop ev 'X-KEY)))
;; Test that they are restored on non-local exit
-(catch #t
- (lambda ()
- (with-replaced-properties
- (ev (X-KEY "other"))
- (throw 'any)))
- (lambda _ (test-equal "value" (prop ev 'X-KEY))))
+(test-group "With replaced properties when throwing"
+ (catch #t
+ (lambda ()
+ (with-replaced-properties
+ (ev (X-KEY "other"))
+ (throw 'any)))
+ (lambda _ (test-equal "value" (prop ev 'X-KEY)))))
diff --git a/tests/test/vcomponent-datetime.scm b/tests/test/vcomponent-datetime.scm
index 073a70ae..49d1711f 100644
--- a/tests/test/vcomponent-datetime.scm
+++ b/tests/test/vcomponent-datetime.scm
@@ -8,15 +8,12 @@
:use-module (srfi srfi-88)
:use-module ((datetime) :select (date time datetime))
:use-module ((vcomponent datetime) :select (event-length/clamped))
- :use-module ((vcomponent formats ical parse) :select (parse-calendar)))
+ :use-module ((vcomponent create) :select (vevent)))
(define ev
- (call-with-input-string
- "BEGIN:VEVENT
-DTSTART:20200329T170000
-DTEND:20200401T100000
-END:VEVENT"
- parse-calendar))
+ (vevent
+ dtstart: #2020-03-29T17:00:00
+ dtend: #2020-04-01T10:00:00))
;; |-----------------| test interval
@@ -31,12 +28,9 @@ END:VEVENT"
ev))
(define utc-ev
- (call-with-input-string
- "BEGIN:VEVENT
-DTSTART:20200329T150000Z
-DTEND:20200401T080000Z
-END:VEVENT"
- parse-calendar))
+ (vevent
+ dtstart: #2020-03-29T15:00:00Z
+ dtend: #2020-04-01T08:00:00Z))
(test-equal
"Correct clamping UTC"
diff --git a/tests/test/vcomponent.scm b/tests/test/vcomponent.scm
index 68715462..52e1b6bb 100644
--- a/tests/test/vcomponent.scm
+++ b/tests/test/vcomponent.scm
@@ -7,14 +7,12 @@
:use-module (srfi srfi-88)
:use-module ((vcomponent base)
:select (prop make-vcomponent add-child! remove-child!
- children))
- :use-module ((vcomponent formats ical parse)
- :select (parse-calendar)))
+ children)))
(define ev
- (call-with-input-string
- "BEGIN:DUMMY\nX-KEY:value\nEND:DUMMY"
- parse-calendar))
+ (let ((ev (make-vcomponent 'DUMMY)))
+ (set! (prop ev 'X-KEY) "value")
+ ev))
(test-assert (eq? #f (prop ev 'MISSING)))
diff --git a/tests/test/xcal.scm b/tests/test/xcal.scm
index 48d43c59..87468370 100644
--- a/tests/test/xcal.scm
+++ b/tests/test/xcal.scm
@@ -6,12 +6,13 @@
(define-module (test xcal)
:use-module (srfi srfi-64)
:use-module (srfi srfi-88)
+ :use-module (datetime)
+ :use-module ((vcomponent create)
+ :select (vcalendar vevent with-parameters))
:use-module ((vcomponent formats xcal parse)
:select (sxcal->vcomponent))
:use-module ((vcomponent formats xcal output)
:select (vcomponent->sxcal))
- :use-module ((vcomponent formats ical parse)
- :select (parse-calendar))
:use-module ((hnh util) :select (->))
:use-module ((vcomponent base)
:select (parameters prop* children)))
@@ -19,25 +20,25 @@
;;; Some different types, same parameters
(define ev
- (call-with-input-string
- "BEGIN:VCALENDAR
-VERSION:2.0
-PRODID:-//calparse-test
-BEGIN:VEVENT
-SUMMARY:Test event
-DTSTART;TZID=Europe/Stockholm:20200625T133000
-DTEND:20200625T143000Z
-DTSTAMP:20200609T131418Z
-UID:1
-SEQUENCE:0
-CREATED:20200609T081725Z
-DESCRIPTION:Short description
-LAST-MODIFIED:20200609T081725Z
-STATUS;X-TEST-PARAM=10:CONFIRMED
-TRANSP:OPAQUE
-END:VEVENT
-END:VCALENDAR"
- parse-calendar))
+ (vcalendar
+ version: "2.0"
+ prodid: "-//calparse-test"
+ (list (vevent
+ summary: "Test event"
+ dtstart: (with-parameters
+ tzid: "Europe/Stockholm"
+ #2020-06-25T13:30:00)
+ dtend: #2020-06-25T14:30:00Z
+ dtstamp: #2020-06-09T13:14:18Z
+ uid: "1"
+ sequence: 0
+ created: #2020-06-09T08:17:25Z
+ description: "Short description"
+ last-modified: #2020-06-09T08:17:25Z
+ status: (with-parameters
+ x-test-param: 10
+ 'CONFIRMED)
+ transp: 'OPAQUE))))
(define twice-converted
(-> ev vcomponent->sxcal sxcal->vcomponent))