diff --git a/devel/210_17.md b/devel/210_17.md new file mode 100644 index 00000000..85b265b6 --- /dev/null +++ b/devel/210_17.md @@ -0,0 +1,15 @@ +# [210_17] srfi-19 date-week-day 和 date-week-number 添加测试 + +## 添加 srfi-19 date-week-day 和 date-week-number 添加测试 + +## 如何测试 + +```shell +# 可能需要清除缓存 +# rm .xmake/ build/ -r +xmake f -vyD +xmake b goldfish +./bin/goldfish tests/goldfish/liii/time-test.scm +``` + + diff --git a/goldfish/srfi/srfi-19.scm b/goldfish/srfi/srfi-19.scm index 23815a27..7fde8c4b 100644 --- a/goldfish/srfi/srfi-19.scm +++ b/goldfish/srfi/srfi-19.scm @@ -75,6 +75,7 @@ date-nanosecond date-second date-minute date-hour date-day date-month date-year date-zone-offset date-year-day + date-week-day date-week-number ;; Time/Date/Julian Day/Modified Julian Day Converters time-utc->date date->time-utc ;; Date to String/String to Date Converters diff --git a/tests/goldfish/liii/time-test.scm b/tests/goldfish/liii/time-test.scm index b769406d..d021e9a3 100644 --- a/tests/goldfish/liii/time-test.scm +++ b/tests/goldfish/liii/time-test.scm @@ -808,6 +808,26 @@ wrong-type-arg (check (date-year-day d4) => 365) (check (date-year-day d5) => 366)) +;; Test date-week-day +(let ((d1 (make-date 0 0 0 0 1 1 1970 0)) ; 1970-01-01 Thu + (d2 (make-date 0 0 0 0 25 12 2023 0)) ; 2023-12-25 Mon + (d3 (make-date 0 0 0 0 29 2 2024 0))) ; 2024-02-29 Thu + (check (date-week-day d1) => 4) + (check (date-week-day d2) => 1) + (check (date-week-day d3) => 4)) + +;; Test date-week-number (ignore first partial week) +(let ((d1 (make-date 0 0 0 0 4 1 1970 0)) ; 1970-01-04 Sun + (d2 (make-date 0 0 0 0 11 1 1970 0)) ; 1970-01-11 Sun + (d3 (make-date 0 0 0 0 5 1 1970 0)) ; 1970-01-05 Mon + (d4 (make-date 0 0 0 0 12 1 1970 0)) ; 1970-01-12 Mon + (d5 (make-date 0 0 0 0 31 12 2024 0))) + (check (date-week-number d1 0) => 0) + (check (date-week-number d2 0) => 1) + (check (date-week-number d3 1) => 0) + (check (date-week-number d4 1) => 1) + (check (date-week-number d5 1) => 52)) + ;; Test error conditions (check-catch 'wrong-type-arg (date-nanosecond "not-a-date")) (check-catch 'wrong-type-arg (date-second 123))