;;; Commentary: ;; Tests date, time, and datetime creation, ;; (output) formatting, and arithmetic. ;;; Code: (define-module (test datetime) :use-module (srfi srfi-64) :use-module (srfi srfi-88) :use-module ((srfi srfi-41) :select (stream->list stream-take)) :use-module (datetime) :use-module ((ice-9 format) :select (format)) :use-module ((hnh util) :select (let*)) :use-module ((ice-9 i18n) :select (make-locale)) :use-module ((guile) :select (LC_CTYPE LC_TIME))) (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 #2020-10-10)) (format #f "~a-~a-~a" (year d) (month d) (day d)))) (test-equal "Manual print (number)" "2020-10-10" (let ((d #2020-10-10)) (format #f "~d-~d-~d" (year d) (month d) (day d)))) (test-equal "Date print" "#2020-01-01" (format #f "~a" #2020-01-01)) (test-equal "time print" "#20:30:40" (format #f "~a" #20:30:40)) (test-equal "time print bad" "#<