aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-06-23 05:01:15 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-06-23 05:02:55 +0200
commit0d9474920c3db4466cca8633a6f7f45b288f404d (patch)
treef09d0159cb0264c8c6df15728c2d0828a2ce432e
parentNormalize base64 errors. (diff)
downloadcalp-0d9474920c3db4466cca8633a6f7f45b288f404d.tar.gz
calp-0d9474920c3db4466cca8633a6f7f45b288f404d.tar.xz
Reformat test/datetime.scm
-rw-r--r--tests/test/datetime.scm281
1 files changed, 101 insertions, 180 deletions
diff --git a/tests/test/datetime.scm b/tests/test/datetime.scm
index d646052d..b2b97d45 100644
--- a/tests/test/datetime.scm
+++ b/tests/test/datetime.scm
@@ -14,206 +14,149 @@
:use-module ((ice-9 i18n) :select (make-locale))
:use-module ((guile) :select (LC_CTYPE LC_TIME)))
-(test-equal
- "A new time is empty"
- (time)
- #00:00:00)
+(test-group
+ "Syntax"
-(test-equal "A new date is empty"
- (date)
- #0000-00-00)
+ (test-equal "A new time is empty"
+ (time) #00:00:00)
-(test-assert
- "Datetime have syntax"
- #2020-01-01)
+ (test-equal "A new date is empty"
+ (date) #0000-00-00)
+ (test-assert "Datetime have syntax"
+ #2020-01-01)
-(test-group "The syntax for <> is equivalent to manually creating them"
- (test-equal
- "dates"
- (date year: 2020 month: 1 day: 1)
- #2020-01-01)
+ (test-group "The syntax for <> is equivalent to manually creating them"
+ (test-equal "dates"
+ (date year: 2020 month: 1 day: 1)
+ #2020-01-01)
- (test-equal
- "times"
- (time hour: 13 minute: 37 second: 0)
- #13:37:00)
+ (test-equal "times"
+ (time hour: 13 minute: 37 second: 0)
+ #13:37:00)
- (test-equal
- "datetimes"
- (datetime year: 2020 month: 1 day: 1
- hour: 13 minute: 37 second: 0)
- #2020-01-01T13:37:00))
+ (test-equal "datetimes"
+ (datetime year: 2020 month: 1 day: 1
+ hour: 13 minute: 37 second: 0)
+ #2020-01-01T13:37:00)))
-(test-equal
- "Date- over leap year month shift"
+(test-equal "Date- over leap year month shift"
#2020-02-28
(date- #2020-03-05
(date day: 6)))
-(test-equal
- "Date- land on leap day"
+(test-equal "Date- land on leap day"
#2020-02-29
(date- #2020-03-05
(date day: 5)))
-(test-equal
- "Date- within month"
+(test-equal "Date- within month"
#2020-03-01
(date- #2020-03-05
(date day: 4)))
-(test-equal
- "date+ day"
+(test-equal "date+ day"
#2020-10-10
(date+ #2020-10-01
(date day: 9)))
-(test-equal
- "date+ month"
+(test-equal "date+ month"
#2020-10-10
(date+ #2020-01-10
(date month: 9)))
-(test-equal
- "date+ day/month"
+(test-equal "date+ day/month"
#2020-10-10
(date+ #2020-01-01
(date day: 9 month: 9)))
-(test-assert
- "date+ first literal"
+(test-assert "date+ first literal"
(date+ #2020-01-01
(date day: 0)))
-(test-assert
- "date+ second literal"
+(test-assert "date+ second literal"
(date+ #0001-01-01
#0001-00-00))
-(test-assert
- "date+ both literal"
+(test-assert "date+ both literal"
(date+ #2020-01-01
#0000-00-00))
-(test-equal
- "date+ year overflow"
+(test-equal "date+ year overflow"
#2019-01-01
(date+ #2018-12-31
(date day: 1)))
-(test-equal
- "date- year overflow"
+(test-equal "date- year overflow"
#2018-12-31
(date- #2019-01-01
(date day: 1)))
-(test-equal
- "date- large"
+(test-equal "date- large"
#0001-01-01
(date- #2020-01-01
#2019-00-00))
-(test-equal
- "date- equal"
+(test-equal "date- equal"
(date year: -1 month: 11 day: 31)
(date- #2020-01-01
#2020-01-01))
-(test-equal
- "Simple datetime construction"
+(test-equal "Simple datetime construction"
#2020-01-01T10:00:00
- (datetime
- date:
- #2020-01-01
- time:
- #10:00:00))
+ (datetime date: #2020-01-01 time: #10:00:00))
-(test-equal
- "Datetime add date-only and time-only."
+(test-equal "Datetime add date-only and time-only."
#2020-01-01T10:00:00
(datetime+
- (datetime
- date:
- #2020-01-01)
- (datetime
- time:
- #10:00:00)))
+ (datetime date: #2020-01-01)
+ (datetime time: #10:00:00)))
-(test-equal
- "Datetime subtract time"
+(test-equal "Datetime subtract time"
#2020-10-09T14:00:00
- (datetime-
- #2020-10-10T00:00:00
- (datetime
- time:
- #10:00:00)))
+ (datetime- #2020-10-10T00:00:00
+ (datetime time: #10:00:00)))
-(test-equal
- "Datetime subtract datetime"
+(test-equal "Datetime subtract datetime"
#2020-09-24T14:00:00
- (datetime-
- #2020-10-10T00:00:00
- #0000-00-15T10:00:00))
+ (datetime- #2020-10-10T00:00:00
+ #0000-00-15T10:00:00))
-(test-equal
- "Date+ multiple"
+(test-equal "Date+ multiple"
#2020-03-10
(date+ #2020-03-01
(date day: 4)
(date day: 5)))
-(let ((diff overflow
- (time- #10:20:30
- #10:20:30)))
- (test-equal
- "time- self"
- #00:00:00
- diff)
+(let ((diff overflow (time- #10:20:30 #10:20:30)))
+ (test-equal "time- self"
+ #00:00:00 diff)
(test-equal "time- self overflow" 0 overflow))
-(let ((diff overflow
- (time- #10:00:00
- #10:00:01)))
- (test-equal
- "time- overflow 1s"
- #23:59:59
- diff)
- (test-equal
- "time- overflow 1s overflow"
- 1
- overflow))
-
-(let ((diff overflow
- (time- #10:00:00
- (time hour: (+ 48 4)))))
- (test-equal
- "time- overflow multiple"
- #06:00:00
- diff)
- (test-equal
- "time- overflow multiple overflow"
- 2
- overflow))
+(let ((diff overflow (time- #10:00:00 #10:00:01)))
+ (test-equal "time- overflow 1s"
+ #23:59:59 diff)
+ (test-equal "time- overflow 1s overflow"
+ 1 overflow))
-(test-equal
- "datetime-difference self"
+(let ((diff overflow (time- #10:00:00 (time hour: (+ 48 4)))))
+ (test-equal "time- overflow multiple"
+ #06:00:00 diff)
+ (test-equal "time- overflow multiple overflow"
+ 2 overflow))
+
+(test-equal "datetime-difference self"
#0000-00-00T00:00:00
(datetime-difference
- (datetime
- date:
- #2020-01-01)
- (datetime
- date:
- #2020-01-01)))
+ (datetime date: #2020-01-01)
+ (datetime date: #2020-01-01)))
;; NOTE
;; at the time of writing this returns #2020-02-00
;; The general question is, how is the last in a month handled?
;; TODO
-(test-equal
- "Date+ over year end"
+(test-equal "Date+ over year end"
#2020-01-31
(date+ #2019-12-31
(date month: 1)))
@@ -221,121 +164,100 @@
(test-assert "leap-year?" (leap-year? 2020))
-(test-equal
- "Add to Leap day"
+(test-equal "Add to Leap day"
#2020-02-29
(date+ #2020-02-28
(date day: 1)))
-(test-equal
- "Parse ISO"
+(test-equal "Parse ISO"
#2021-12-30T13:53:33
(string->datetime
- "2021-12-30T13:53:33"
- "~Y-~m-~dT~H:~M:~S"))
+ "2021-12-30T13:53:33"
+ "~Y-~m-~dT~H:~M:~S"))
-(test-equal
- "Parse ical date-time"
+(test-equal "Parse ical date-time"
#2021-12-30T13:53:33
(string->datetime
- "20211230T135333"
- "~Y~m~dT~H~M~S"))
+ "20211230T135333"
+ "~Y~m~dT~H~M~S"))
-(test-equal
- "Parse single hour (padded)"
+(test-equal "Parse single hour (padded)"
(time hour: 5)
(string->time "05" "~H"))
-(test-equal
- "Parse single hour (non-padded)"
+(test-equal "Parse single hour (non-padded)"
(time hour: 5)
(string->time "5" "~H"))
-(test-equal
- "Parse month (swedish)"
+(test-equal "Parse month (swedish)"
(date month: 5)
(string->date
- "Maj"
- "~b"
- (make-locale (list LC_CTYPE LC_TIME) "sv_SE.UTF-8")))
+ "Maj"
+ "~b"
+ (make-locale (list LC_CTYPE LC_TIME) "sv_SE.UTF-8")))
-(test-equal
- "Parse month (english)"
+(test-equal "Parse month (english)"
(date month: 5)
(string->date
- "May"
- "~b"
- (make-locale (list LC_CTYPE LC_TIME) "en_US.UTF-8")))
+ "May"
+ "~b"
+ (make-locale (list LC_CTYPE LC_TIME) "en_US.UTF-8")))
-(test-equal
- "AM/PM AM"
+(test-equal "AM/PM AM"
(time hour: 10)
(string->time "10 AM" "~H ~p"))
-(test-equal
- "AM/PM PM"
+(test-equal "AM/PM PM"
(time hour: 22)
(string->time "10 PM" "~H ~p"))
-(test-equal
- "AM/PM AM 12"
+(test-equal "AM/PM AM 12"
(time hour: 0)
(string->time "12 AM" "~H ~p"))
-(test-equal
- "AM/PM PM 12"
+(test-equal "AM/PM PM 12"
(time hour: 12)
(string->time "12 PM" "~H ~p"))
-(test-equal
- "AM/PM PM (prefix)"
+(test-equal "AM/PM PM (prefix)"
(time hour: 22)
(string->time "PM 10" "~p ~H"))
-(test-equal
- "Parse complicated 1"
+(test-equal "Parse complicated 1"
#2021-12-30T10:56:00
(string->datetime
- "Dec. 30, 2021, 10:56"
- "~b. ~d, ~Y, ~H:~M"
- (make-locale LC_TIME "en_US.UTF-8")))
+ "Dec. 30, 2021, 10:56"
+ "~b. ~d, ~Y, ~H:~M"
+ (make-locale LC_TIME "en_US.UTF-8")))
-(test-equal
- "Parse complicated 2"
+(test-equal "Parse complicated 2"
#2021-12-30T10:56:00
(string->datetime
- "Dec. 30, 2021, 10:56 a.m."
- "~b. ~d, ~Y, ~H:~M"
- (make-locale LC_TIME "en_US.UTF-8")))
+ "Dec. 30, 2021, 10:56 a.m."
+ "~b. ~d, ~Y, ~H:~M"
+ (make-locale LC_TIME "en_US.UTF-8")))
-(test-equal
- "Parse complicated 3"
+(test-equal "Parse complicated 3"
#2021-12-30T22:56:00
(string->datetime
- "Dec. 30, 2021, 10:56 p.m."
- "~b. ~d, ~Y, ~H:~M ~p"
- (make-locale LC_TIME "en_US.UTF-8")))
+ "Dec. 30, 2021, 10:56 p.m."
+ "~b. ~d, ~Y, ~H:~M ~p"
+ (make-locale LC_TIME "en_US.UTF-8")))
-(test-equal
- "Parse date single digit day"
+(test-equal "Parse date single digit day"
(date day: 6)
(string->date "6" "~d"))
-(test-equal
- "Parse date single digit day, trailing comma"
+(test-equal "Parse date single digit day, trailing comma"
(date day: 6)
(string->date "6," "~d,"))
-(test-equal
- "Parse date single digit day, trailing comma + space"
+(test-equal "Parse date single digit day, trailing comma + space"
(date day: 6)
(string->date "6, " "~d, "))
-(define en_US
- (make-locale (list LC_CTYPE LC_TIME) "en_US.UTF-8"))
-
-(define sv_SE
- (make-locale (list LC_CTYPE LC_TIME) "sv_SE.UTF-8"))
+(define en_US (make-locale (list LC_CTYPE LC_TIME) "en_US.UTF-8"))
+(define sv_SE (make-locale (list LC_CTYPE LC_TIME) "sv_SE.UTF-8"))
(test-equal "Week day name"
"söndag" (week-day-name sun locale: sv_SE))
@@ -372,7 +294,6 @@
#2020-12-31))
-
(test-error "Construct invalid date (year)"
'wrong-type-arg
(date year: #f))