blob: b32759bacd9380024e43153d88a9ac623a5b54d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
(((srfi srfi-41) stream-take stream-map stream->list)
((srfi srfi-19) date->time-utc time-utc->date)
((srfi srfi-19 util) day-stream)
((vcomponent base) extract attr)
((vcomponent) parse-calendar)
((vcomponent recurrence) generate-recurrence-set))
;;; Test that basic recurrence works
(define ev
(call-with-input-string
"BEGIN:VEVENT
DTSTART;20190302
RRULE:FREQ=DAILY
END:VEVENT"
parse-calendar))
(test-assert "Generate at all"
(stream->list (stream-take 5 (generate-recurrence-set ev))))
(test-equal "Generate First"
(stream->list
(stream-take
5 (stream-map (extract 'DTSTART)
(generate-recurrence-set ev))))
(stream->list
(stream-take
5 (stream-map date->time-utc
(day-stream
(time-utc->date (attr ev 'DTSTART)))))))
;; We run the exact same thing a secound time, since I had an error with
;; that during development.
(test-equal "Generate Again"
(stream->list
(stream-take
5 (stream-map (extract 'DTSTART)
(generate-recurrence-set ev))))
(stream->list
(stream-take
5 (stream-map date->time-utc
(day-stream
(time-utc->date (attr ev 'DTSTART)))))))
;;; TODO, also test:
;;; - limited repetition
;;; - weird rules
|