From d46b1f67cf49caff6afbc3141b65a6255f0bacb2 Mon Sep 17 00:00:00 2001
From: pfdietz <pfdietz@localhost>
Date: Sun, 8 May 2005 13:20:06 +0000
Subject: [PATCH] Clean up and extended tests

---
 ansi-tests/decode-universal-time.lsp | 52 ++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/ansi-tests/decode-universal-time.lsp b/ansi-tests/decode-universal-time.lsp
index dd8eb7a1..3607482c 100644
--- a/ansi-tests/decode-universal-time.lsp
+++ b/ansi-tests/decode-universal-time.lsp
@@ -43,9 +43,11 @@
 
 (deftest decode-universal-time.5
   (let ((count 0))
-    (loop for time = (let ((x (random 10000000000))) (print x) x)
+    (loop for time = (random 10000000000)
 	  for (second minute hour date month year day daylight-p zone)
-	  = (multiple-value-list (decode-universal-time time))
+	  = (handler-case
+	     (multiple-value-list (decode-universal-time time))
+	     (error (c) (print time) (error c)))
 	  for time2 = (encode-universal-time second minute hour date month year)
 	  repeat 1000
 	  unless (eql time time2)
@@ -54,6 +56,52 @@
 	  until (>= count 100)))
   nil)
 
+(deftest decode-universal-time.6
+  (let ((vals0 (multiple-value-list (get-decoded-time)))
+	(vals1 (multiple-value-list (decode-universal-time (get-universal-time))))
+	(vals2 (multiple-value-list (get-decoded-time))))
+    (when (equal vals0 vals2)
+      (assert (= (length vals1) 9))
+      (assert (= (length vals2) 9))
+      (assert (equal (subseq vals1 0 7) (subseq vals2 0 7)))
+      (assert (if (elt vals1 7) (elt vals2 7) (not (elt vals2 7))))
+      (assert (= (elt vals1 8) (elt vals2 8))))
+    (values)))
+
+(deftest decode-universal-time.7
+  (decode-universal-time  (* 365 3600 24) 0)
+  0 0 0 1 1 1901 1 nil 0)
+
+(deftest decode-universal-time.8
+  (decode-universal-time  (* 2 365 3600 24) 0)
+  0 0 0 1 1 1902 2 nil 0)
+
+(deftest decode-universal-time.9
+  (decode-universal-time  (* 3 365 3600 24) 0)
+  0 0 0 1 1 1903 3 nil 0)
+
+(deftest decode-universal-time.10
+  (decode-universal-time  (* 4 365 3600 24) 0)
+  0 0 0 1 1 1904 4 nil 0)
+
+(deftest decode-universal-time.11
+  (decode-universal-time (+ (* 24 3600) (* 5 365 3600 24)) 0)
+  0 0 0 1 1 1905 6 nil 0)
+
+(deftest decode-universal-time.12
+  (loop for time = (random 100000000000)
+	for tz = (- (random 49) 24)
+	for interval = (1+ (random 10000))
+	for time2 = (+ time (* interval  24 3600))
+	;; 'time2' is exactly interval days after 'time'
+	for day = (nth-value 6 (decode-universal-time time tz))
+	for day2 = (nth-value 6 (decode-universal-time time2 tz))
+	repeat 1000
+	;; Check that the days of the week are consistent
+	unless (= (mod day2 7) (mod (+ day interval) 7))
+	collect (list time time2 tz interval day day2))
+  nil)
+
 ;;; Error tests
 
 (deftest decode-universal-time.error.1
-- 
GitLab