;-*- Mode:     Lisp -*-
;;;; Author:   Paul Dietz
;;;; Created:  Sun May  8 19:25:41 2005
;;;; Contains: Tests of GET-UNIVERSAL-TIME, GET-DECODED-TIME



;;; Note -- this ignores the possibilty that the time cannot
;;; be determined.

(deftest get-universal-time.1
  (notnot-mv (typep (get-universal-time) 'unsigned-byte))
  t)

(deftest get-universal-time.2
  (let* ((time1 (get-universal-time))
         (vals (multiple-value-list (get-decoded-time)))
         (time2 (get-universal-time)))
    (when (= time1 time2)
      (let ((vals2 (multiple-value-list (decode-universal-time time1))))
        (assert (= (length vals) 9))
        (assert (= (length vals2) 9))
        (assert (equal (subseq vals 0 7)
                       (subseq vals2 0 7)))
        (assert (if (elt vals 7) (elt vals2 7) (not (elt vals2 7))))
        (assert (= (elt vals 8) (elt vals2 8)))))
    (values)))

(deftest get-universal-time.3
  (let* ((first (get-universal-time))
         (prev first))
    (loop for time = (get-universal-time)
          do (assert (>= time prev))
          do (setf prev time)
          until (>= time (+ 5 first))))
  nil)

;;; Error tests

(deftest get-universal-time.error.1
  (signals-error (get-universal-time nil) program-error)
  t)

(deftest get-universal-time.error.2
  (signals-error (get-universal-time :allow-other-keys t) program-error)
  t)

(deftest get-decoded-time.error.1
  (signals-error (get-decoded-time nil) program-error)
  t)

(deftest get-decoded-time.error.2
  (signals-error (get-decoded-time :allow-other-keys t) program-error)
  t)





