aboutsummaryrefslogtreecommitdiff
path: root/tests/time.scm
blob: 65edfcbde0f8c4d791c9efd4588ca187513ccc19 (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
51
52
53
54
55
56
57
58
(((srfi srfi-19 util)
  date day-stream normalize-date
  drop-time normalize-date/tz
  )
 ((util) set let-env)
 ((srfi srfi-19) date-day)
 )

(test-equal "Trivial normalize case"
  (date year: 2020 month: 1 day: 1 tz: 0)
  (normalize-date (date year: 2020 month: 1 day: 1 tz: 0)))

(test-equal "Trivial case, with timezone"
  (date year: 2020 month: 1 day: 1 tz: 3600)
  (normalize-date (date year: 2020 month: 1 day: 1 tz: 3600)))

;;; summer time begins 02:00 (becomes 03:00) during the night
;;; between the 28 and 29 of mars 2020, for Europe/Stockholm.
;;; (CET → CEST alt. UTC+1 → UTC+2)

(test-equal "Time zone spill over"
  (date year: 2020 month: 3 day: 29 tz: 3600)
  (normalize-date (set (date-day (date year: 2020 month: 3 day: 28 tz: 3600))
                       = (+ 1))))

;;; TODO normalize-date*



;;; !!! TODO !!!

(test-assert "normalize-date/tz"
  (not (unspecified? (normalize-date/tz (date)))))

(test-equal "Trivial normalize case"
  (date year: 2020 month: 1 day: 1 hour: 1 tz: 3600)
  (normalize-date/tz (date year: 2020 month: 1 day: 1 tz: 0)
                     "Europe/Stockholm"))

(test-equal "Trivial case, with timezone"
  (date year: 2020 month: 1 day: 1 tz: 3600)
  (normalize-date/tz (date year: 2020 month: 1 day: 1 tz: 3600)
                     "Europe/Stockholm"))

(test-equal "Time zone spill over"
  (date year: 2020 month: 3 day: 30 hour: 1 tz: 7200)
  (normalize-date/tz (set (date-day (date year: 2020 month: 3 day: 29 tz: 3600))
                          = (+ 1))
                     "Europe/Stockholm"))




(test-equal "drop time"
  (date)
  (drop-time (date hour: 10 minute: 70 second: 100)))