aboutsummaryrefslogtreecommitdiff
path: root/tests/recurring.scm
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