From 1af666c6b4325a28a0facaf6424b69ad64b7b254 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 29 Jul 2019 12:54:45 +0200 Subject: Add more tests from the standard --- test/lisp/calendar/iso8601-tests.el | 80 +++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) (limited to 'test/lisp/calendar/iso8601-tests.el') diff --git a/test/lisp/calendar/iso8601-tests.el b/test/lisp/calendar/iso8601-tests.el index 5403c8e2077..7b1dbfdf495 100644 --- a/test/lisp/calendar/iso8601-tests.el +++ b/test/lisp/calendar/iso8601-tests.el @@ -208,4 +208,84 @@ (should (equal (iso8601-parse-time "15:27:46-05") '(46 27 15 nil nil nil nil nil -300)))) +(ert-deftest standard-test-date-and-time-of-day () + (should (equal (iso8601-parse "19850412T101530") + '(30 15 10 12 4 1985 nil nil nil))) + (should (equal (iso8601-parse "1985-04-12T10:15:30") + '(30 15 10 12 4 1985 nil nil nil))) + + (should (equal (iso8601-parse "1985102T235030Z") + '(30 50 23 12 4 1985 nil nil 0))) + (should (equal (iso8601-parse "1985-102T23:50:30Z") + '(30 50 23 12 4 1985 nil nil 0))) + + (should (equal (iso8601-parse "1985W155T235030") + '(30 50 23 12 4 1985 nil nil nil))) + (should (equal (iso8601-parse "1985-W155T23:50:30") + '(30 50 23 12 4 1985 nil nil nil)))) + +(ert-deftest standard-test-interval () + ;; A time interval starting at 20 minutes and 50 seconds past 23 + ;; hours on 12 April 1985 and ending at 30 minutes past 10 hours on + ;; 25 June 1985. + (should (equal (iso8601-parse-interval "19850412T232050/19850625T103000") + '((50 20 23 12 4 1985 nil nil nil) + (0 30 10 25 6 1985 nil nil nil) + (10 9 11 15 3 1970 0 nil 0)))) + (should (equal (iso8601-parse-interval + "1985-04-12T23:20:50/1985-06-25T10:30:00") + '((50 20 23 12 4 1985 nil nil nil) + (0 30 10 25 6 1985 nil nil nil) + (10 9 11 15 3 1970 0 nil 0)))) + + ;; A time interval starting at 12 April 1985 and ending on 25 June + ;; 1985. + + ;; This example doesn't seem valid according to the standard. + ;; "0625" is unambiguous, and means "the year 625". Weird. + ;; (should (equal (iso8601-parse-interval "19850412/0625") + ;; '((nil nil nil 12 4 1985 nil nil nil) + ;; (nil nil nil nil nil 625 nil nil nil) + ;; (0 17 0 22 9 609 5 nil 0)))) + + ;; A time interval of 2 years, 10 months, 15 days, 10 hours, 20 + ;; minutes and 30 seconds. + (should (equal (iso8601-parse-duration "P2Y10M15DT10H20M30S") + '(30 20 10 15 10 2 nil nil nil))) + + (should (equal (iso8601-parse-duration "P00021015T102030") + '(30 20 10 15 10 2 nil nil nil))) + (should (equal (iso8601-parse-duration "P0002-10-15T10:20:30") + '(30 20 10 15 10 2 nil nil nil))) + + ;; A time interval of 1 year and 6 months. + (should (equal (iso8601-parse-duration "P1Y6M") + '(0 0 0 0 6 1 nil nil nil))) + (should (equal (iso8601-parse-duration "P0001-06") + '(nil nil nil nil 6 1 nil nil nil))) + + ;; A time interval of seventy-two hours. + (should (equal (iso8601-parse-duration "PT72H") + '(0 0 72 0 0 0 nil nil nil))) + + ;; Defined by start and duration + ;; A time interval of 1 year, 2 months, 15 days and 12 hours, + ;; beginning on 12 April 1985 at 20 minutes past 23 hours. + (should (equal (iso8601-parse-interval "19850412T232000/P1Y2M15DT12H") + '((0 20 23 12 4 1985 nil nil nil) + (0 20 11 28 6 1986 nil nil nil) + (0 0 12 15 2 1 nil nil nil)))) + (should (equal (iso8601-parse-interval "1985-04-12T23:20:00/P1Y2M15DT12H") + '((0 20 23 12 4 1985 nil nil nil) + (0 20 11 28 6 1986 nil nil nil) + (0 0 12 15 2 1 nil nil nil)))) + + ;; Defined by duration and end + ;; A time interval of 1 year, 2 months, 15 days and 12 hours, ending + ;; on 12 April 1985 at 20 minutes past 23 hour. + (should (equal (iso8601-parse-interval "P1Y2M15DT12H/19850412T232000") + '((0 20 11 28 1 1984 nil nil nil) + (0 20 23 12 4 1985 nil nil nil) + (0 0 12 15 2 1 nil nil nil))))) + ;;; iso8601-tests.el ends here -- cgit v1.2.1