diff --git a/devel/210_16.md b/devel/210_16.md new file mode 100644 index 00000000..a2e09f21 --- /dev/null +++ b/devel/210_16.md @@ -0,0 +1,15 @@ +# [210_16] srfi-19 date-year-day 添加测试 + +## 添加 srfi-19 date-year-day 添加测试 + +## 如何测试 + +```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 70ff4b05..23815a27 100644 --- a/goldfish/srfi/srfi-19.scm +++ b/goldfish/srfi/srfi-19.scm @@ -74,6 +74,7 @@ make-date date? date-nanosecond date-second date-minute date-hour date-day date-month date-year date-zone-offset + date-year-day ;; 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 011b8dba..b769406d 100644 --- a/tests/goldfish/liii/time-test.scm +++ b/tests/goldfish/liii/time-test.scm @@ -796,6 +796,18 @@ wrong-type-arg (check (date-year d) => 2000) (check (date-zone-offset d) => -14400)) +;; Test date-year-day +(let ((d1 (make-date 0 0 0 0 1 1 2023 0)) ; non-leap year + (d2 (make-date 0 0 0 0 1 3 2023 0)) + (d3 (make-date 0 0 0 0 1 3 2024 0)) ; leap year + (d4 (make-date 0 0 0 0 31 12 2023 0)) + (d5 (make-date 0 0 0 0 31 12 2024 0))) ; negative year + (check (date-year-day d1) => 1) + (check (date-year-day d2) => 60) + (check (date-year-day d3) => 61) + (check (date-year-day d4) => 365) + (check (date-year-day d5) => 366)) + ;; Test error conditions (check-catch 'wrong-type-arg (date-nanosecond "not-a-date")) (check-catch 'wrong-type-arg (date-second 123))