From d6b1dddeb255053332b5059f4b5dcfa7112d96e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 19 Feb 2020 01:28:02 +0100 Subject: Update tests to remove srfi-19. --- tests/datetime.scm | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 tests/datetime.scm (limited to 'tests/datetime.scm') diff --git a/tests/datetime.scm b/tests/datetime.scm new file mode 100644 index 00000000..b678edad --- /dev/null +++ b/tests/datetime.scm @@ -0,0 +1,124 @@ +(((datetime) date+ date- + time+ time- + year month day + date time + datetime + datetime+ + datetime<=? + datetime-difference + leap-year? + ) + ((ice-9 format) format) + ) + +(test-equal "empty time" + (time) #00:00:00) + +(test-assert "Synatx date" + #2020-01-01) + +(test-assert "Test year type" + (integer? (year (date year: 2020)))) + +(test-assert "Test mmnth type" + (integer? (month (date month: 1)))) + +(test-assert "Test day type" + (integer? (day (date day: 1)))) + +(test-equal "Manual print (any)" + "2020-10-10" + (let ((d (date year: 2020 month: 10 day: 10))) + (format #f "~a-~a-~a" + (year d) (month d) (day d)))) + +(test-equal "Manual print (number)" + "2020-10-10" + (let ((d (date year: 2020 month: 10 day: 10))) + (format #f "~d-~d-~d" + (year d) (month d) (day d)))) + +(test-equal "Date print" + "2020-01-01" + (format #f "~a" (date year: 2020 month: 1 day: 1))) + +(test-equal "Syntax date=" + (date year: 2020 month: 1 day: 1) + #2020-01-01) + +(test-equal "Syntax time=" + (time hour: 13 minute: 37 second: 0) + #13:37:00) + +(test-equal "Syntax Datetime=" + (datetime year: 2020 month: 1 day: 1 hour: 13 minute: 37 second: 0) + #2020-01-01T13:37:00) + +(test-equal #2020-02-28 (date- #2020-03-05 (date day: 6))) +(test-equal #2020-02-29 (date- #2020-03-05 (date day: 5))) +(test-equal #2020-03-01 (date- #2020-03-05 (date day: 4))) + +(test-equal "date+ day" #2020-10-10 (date+ #2020-10-01 (date day: 9))) +(test-equal "date+ month" #2020-10-10 (date+ #2020-01-10 (date month: 9))) +(test-equal "date+ day/month" #2020-10-10 (date+ #2020-01-01 (date day: 9 month: 9))) +;; (test-equal "date+ year" #4040-10-10 (date+ #2020-10-10 (date year: 2020))) + +(test-assert "date+ first literal" (date+ #2020-01-01 (date day: 0))) +(test-assert "date+ second literal" (date+ (date year: 1 month: 1 day: 1) #0001-00-00)) +(test-assert "date+ both literal" (date+ #2020-01-01 #0000-00-00)) + +(test-equal "date+ year overflow" #2019-01-01 (date+ #2018-12-31 (date day: 1))) +(test-equal "date- year overflow" #2018-12-31 (date- #2019-01-01 (date day: 1))) + +;; (test-equal "date+ large" #4040-10-10 (date+ #2020-05-03 #2020-05-07)) + +(test-equal "date- large" #0001-01-01 (date- #2020-01-01 #2019-00-00)) + +;; Datum är spännande +(test-equal "date- equal" (date year: -1 month: 11 day: 31) + (date- #2020-01-01 #2020-01-01)) + +(test-equal #2020-01-01T10:00:00 (datetime date: #2020-01-01 + time: #10:00:00)) +(test-equal #2020-01-01T10:00:00 + (datetime+ (datetime date: #2020-01-01) + (datetime time: #10:00:00))) + + +(test-equal #2020-03-10 + (date+ #2020-03-01 + (date day: 4) + (date day: 5))) + + +(test-equal "time- self" + #00:00:00 + (time- #10:20:30 #10:20:30)) + +(test-equal "datetime-difference self" + #0000-00-00T00:00:00 + (datetime-difference (datetime date: #2020-01-01) (datetime date: #2020-01-01))) + +;; (test-assert +;; (datetime- #2018-01-17T10:00:00 +;; #2018-01-17T08:00:00)) + + +;; (test-assert +;; (datetime<=? (datetime time: (time hour: 24)) +;; (datetime- #2018-01-17T10:00:00 +;; #2018-01-17T08:00:00))) + + +;; TODO +;; at the time of writing this returns #2020-02-00 +;; The general question is, how is the last in a month handled? +;; (test-equal +;; (date+ #2019-12-31 (date month: 1))) + +(test-assert (leap-year? 2020)) + +(test-equal "Add to Leap day" + #2020-02-29 (date+ #2020-02-28 (date day: 1))) + + -- cgit v1.2.3