aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2021-01-14 00:07:22 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2021-01-14 00:07:22 +0100
commita1ae616a1177fa50b6c5bb86a341081a3b06e710 (patch)
treeaf6397154c3511a8488ff0e7701841de4a93491e
parentFix broken test. (diff)
downloadcalp-a1ae616a1177fa50b6c5bb86a341081a3b06e710.tar.gz
calp-a1ae616a1177fa50b6c5bb86a341081a3b06e710.tar.xz
Merge several recurrence test files.
-rw-r--r--tests/recurrence-id.scm53
-rw-r--r--tests/recurring.scm82
-rw-r--r--tests/rrule-parse.scm29
3 files changed, 80 insertions, 84 deletions
diff --git a/tests/recurrence-id.scm b/tests/recurrence-id.scm
deleted file mode 100644
index be58d924..00000000
--- a/tests/recurrence-id.scm
+++ /dev/null
@@ -1,53 +0,0 @@
-;;; Commentary:
-;; Tests that exceptions (in the recurrence-id meaning)
-;; in recurrence sets are handled correctly.
-;; TODO Is however far from done.
-;;; Code:
-
-(((srfi srfi-41) stream->list)
- ((vcomponent) parse-calendar)
- ((vcomponent recurrence) generate-recurrence-set)
- ((guile) format)
- )
-
-(define uid (symbol->string (gensym "areallyuniqueid")))
-
-;; TODO standardize vcomponents for tests as xcal, for example:
-`(vcalendar
- (children
- (vevent
- (properties
- (summary (text "Changing type on Recurrence-id."))
- (uid (text ,uid))
- (dtstart (date "20090127"))))
- (vevent
- (properties
- (summary (text "Changing type on Recurrence-id."))
- (uid (text ,uid))
- (dtstart (params (TZID "Europe/Stockholm"))
- (date-time "20100127T120000"))
- (recurrence-id (date "20100127"))
- (summary "This instance only has a time component")))))
-
-(define ev
- (call-with-input-string
- (format #f "BEGIN:VCALENDAR
-BEGIN:VEVENT
-SUMMARY:Changing type on Recurrence-id.
-UID:~a
-DTSTART;VALUE=DATE:20090127
-END:VEVENT
-BEGIN:VEVENT
-UID:~a
-SUMMARY:Changing type on Recurrence-id.
-DTSTART;TZID=Europe/Stockholm:20100127T120000
-RECURRENCE-ID;VALUE=DATE:20100127
-SUMMARY:This instance only has a time component
-END:VEVENT
-END:VCALENDAR"
- uid uid)
- parse-calendar))
-
-
-(test-assert "Changing type on Recurrence id."
- (stream->list 10 (generate-recurrence-set ev)))
diff --git a/tests/recurring.scm b/tests/recurring.scm
index d677971e..8d930ad1 100644
--- a/tests/recurring.scm
+++ b/tests/recurring.scm
@@ -1,13 +1,45 @@
;;; Commentary:
+;; Basic tests that recurrence rule parsing works.
+;; Including that it fails on invalid output.
+;;
+;;
;; General tests of "generate-recurrence-set".
;;; Code:
(((srfi srfi-41) stream-take stream-map stream->list stream-car)
- ((datetime) day-stream)
+ ((datetime) day-stream mon)
((vcomponent base) extract prop)
+ ((calp util exceptions) warnings-are-errors warning-handler)
+ ((guile) format)
+
((vcomponent) parse-calendar)
- ((vcomponent recurrence) generate-recurrence-set))
+ ((vcomponent recurrence)
+ parse-recurrence-rule
+ make-recur-rule
+ generate-recurrence-set))
+
+;;; Test that basic parsing or recurrence rules work.
+
+(test-equal (make-recur-rule freq: 'HOURLY wkst: mon interval: 1)
+ (parse-recurrence-rule "FREQ=HOURLY"))
+
+(test-equal (make-recur-rule freq: 'HOURLY count: 3 interval: 1 wkst: mon)
+ (parse-recurrence-rule "FREQ=HOURLY;COUNT=3"))
+
+;;; Test that recurrence rule parsing fails where appropriate
+
+(parameterize ((warnings-are-errors #t)
+ (warning-handler identity)) ; silence warnings
+ (test-error "Invalid FREQ" 'warning
+ (parse-recurrence-rule "FREQ=ERR;COUNT=3"))
+
+ (test-error "Negative COUNT" 'warning
+ (parse-recurrence-rule "FREQ=HOURLY;COUNT=-1"))
+
+ (test-error "Invalid COUNT"
+ 'wrong-type-argument
+ (parse-recurrence-rule "FREQ=HOURLY;COUNT=err")) )
;;; Test that basic recurrence works
;;; also see the neighbour test file recurrence.scm for more tests.
@@ -162,3 +194,49 @@ END:VEVENT"
(test-assert "Full test"
(stream-car (generate-recurrence-set ev)))
+
+;;; Tests that exceptions (in the recurrence-id meaning)
+;;; in recurrence sets are handled correctly.
+;;; TODO Is however far from done.
+
+(define uid (symbol->string (gensym "areallyuniqueid")))
+
+;; TODO standardize vcomponents for tests as xcal, for example:
+`(vcalendar
+ (children
+ (vevent
+ (properties
+ (summary (text "Changing type on Recurrence-id."))
+ (uid (text ,uid))
+ (dtstart (date "20090127"))))
+ (vevent
+ (properties
+ (summary (text "Changing type on Recurrence-id."))
+ (uid (text ,uid))
+ (dtstart (params (TZID "Europe/Stockholm"))
+ (date-time "20100127T120000"))
+ (recurrence-id (date "20100127"))
+ (summary "This instance only has a time component")))))
+
+(define ev
+ (call-with-input-string
+ (format #f "BEGIN:VCALENDAR
+BEGIN:VEVENT
+SUMMARY:Changing type on Recurrence-id.
+UID:~a
+DTSTART;VALUE=DATE:20090127
+END:VEVENT
+BEGIN:VEVENT
+UID:~a
+SUMMARY:Changing type on Recurrence-id.
+DTSTART;TZID=Europe/Stockholm:20100127T120000
+RECURRENCE-ID;VALUE=DATE:20100127
+SUMMARY:This instance only has a time component
+END:VEVENT
+END:VCALENDAR"
+ uid uid)
+ parse-calendar))
+
+
+(test-assert "Changing type on Recurrence id."
+ (stream->list 10 (generate-recurrence-set ev)))
diff --git a/tests/rrule-parse.scm b/tests/rrule-parse.scm
deleted file mode 100644
index e2990cbc..00000000
--- a/tests/rrule-parse.scm
+++ /dev/null
@@ -1,29 +0,0 @@
-;;; Commentary:
-;; Basic tests that recurrence rule parsing works.
-;; Including that it fails on invalid output.
-;;; Code:
-
-(((vcomponent recurrence parse)
- parse-recurrence-rule)
- ((vcomponent recurrence) make-recur-rule)
- ((datetime) mon)
- ((calp util exceptions) warnings-are-errors warning-handler)
- )
-
-(test-equal (make-recur-rule freq: 'HOURLY wkst: mon interval: 1)
- (parse-recurrence-rule "FREQ=HOURLY"))
-
-(test-equal (make-recur-rule freq: 'HOURLY count: 3 interval: 1 wkst: mon)
- (parse-recurrence-rule "FREQ=HOURLY;COUNT=3"))
-
-(parameterize ((warnings-are-errors #t)
- (warning-handler identity)) ; silence warnings
- (test-error "Invalid FREQ" 'warning
- (parse-recurrence-rule "FREQ=ERR;COUNT=3"))
-
- (test-error "Negative COUNT" 'warning
- (parse-recurrence-rule "FREQ=HOURLY;COUNT=-1"))
-
- (test-error "Invalid COUNT"
- 'wrong-type-argument
- (parse-recurrence-rule "FREQ=HOURLY;COUNT=err")) )