aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/vcomponent/vcomponent-datetime.scm
blob: 18616bb4ac980381d6e7784d58c001dd4820b1cb (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
;;; Commentary:
;; Tests that event-clamping (checking how long part of an event
;; overlaps another time span) works.
;;; Code:

(define-module (test vcomponent-datetime)
  :use-module (srfi srfi-64)
  :use-module (srfi srfi-88)
  :use-module ((datetime) :select (date time datetime))
  :use-module ((vcomponent datetime) :select (event-length/clamped))
  :use-module ((vcomponent create) :select (vevent)))

(define ev
  (vevent
   dtstart: (datetime year: 2020 month: 3 day: 29 hour: 17)
   dtend:   (datetime year: 2020 month: 4 day:  1 hour: 10)))


;; |-----------------| test interval
;;                 |----------| event interval

(test-equal
  "Correct clamping"
  (datetime time: (time hour: 7)) ; 2020-03-29T17:00 - 2020-03-30T00:00
  (event-length/clamped
    (date year: 2020 month: 3 day: 23) ; a time way before the start of the event
    (date year: 2020 month: 3 day: 29) ; a time slightly after the end of the event
    ev))

(define utc-ev
  (vevent
   dtstart: (datetime year: 2020 month: 3 day: 29 hour: 15 tz: "UTC")
   dtend:   (datetime year: 2020 month: 4 day:  1 hour:  8 tz: "UTC")))

(test-equal
  "Correct clamping UTC"
  (datetime time: (time hour: 7))
  (event-length/clamped
    (date year: 2020 month: 3 day: 23)
    (date year: 2020 month: 3 day: 29)
    ev))


'((vcomponent datetime))