Fix test in SBCL
[jscl.git] / tests.lisp
index b230068..65b4ae2 100644 (file)
@@ -1,15 +1,45 @@
-(defvar *passed-tets* 0)
-(defvar *failed-tets* 0)
-(defvar *timestamp* (get-internal-real-time))
+(defparameter *total-tests* 0)
+(defparameter *passed-tests* 0)
+(defparameter *failed-tests* 0)
+(defparameter *expected-failures* 0)
+(defparameter *unexpected-passes* 0)
+
+(defvar *use-html-output-p* t)
+(defun if-html (string) (if *use-html-output-p* string ""))
+
+(defvar *timestamp* nil)
 
 (defmacro test (condition)
-  `(cond
-     (,condition
-      (write-line ,(concat "Test `" (prin1-to-string condition) "' passed"))
-      (incf *passed-tets*))
-     (t
-      (write-line ,(concat "Test `" (prin1-to-string condition) "' failed."))
-      (incf *failed-tets*))))
+  `(progn
+     (cond
+       (,condition
+        (write-line ,(concat "Test `" (prin1-to-string condition) "' passed"))
+        (incf *passed-tests*))
+       (t
+        (write-line (concat (if-html "<font color=red>")
+                            "Test `"
+                            ,(prin1-to-string condition) 
+                            "' failed."
+                            (if-html "</font>")))
+        (incf *failed-tests*)))
+     (incf *total-tests*)))
+
+(defmacro expected-failure (condition)
+  `(progn
+     (cond
+       (,condition
+         (write-line (concat (if-html "<font color=orange>")
+                             "Test `"
+                             ,(prin1-to-string condition)
+                             "' passed unexpectedly!"
+                             (if-html "</font>")))
+        (incf *unexpected-passes*))
+       (t
+        (write-line ,(concat "Test `" (prin1-to-string condition) "' failed expectedly."))
+        (incf *expected-failures*)))
+     (incf *total-tests*)))
 
 (write-line "Running tests...")
 (write-line "")
+
+(setq *timestamp* (get-internal-real-time))