Fix comment
[jscl.git] / tests.lisp
1 (defparameter *total-tests* 0)
2 (defparameter *passed-tests* 0)
3 (defparameter *failed-tests* 0)
4 (defparameter *expected-failures* 0)
5 (defparameter *unexpected-passes* 0)
6
7 (defvar *use-html-output-p* t)
8 (defvar *timestamp* nil)
9
10 (defmacro async (&body body)
11   `(#j:setTimeout (lambda () ,@body)))
12
13 (defun test-fn (condition form)
14   (async
15    (cond
16      (condition
17       (format t "Test `~S' passed~%" form)
18       (incf *passed-tests*))
19      (t
20       (if *use-html-output-p*
21           (format t "<font color='red'>Test `~S' failed.</font>~%" form)
22           (format t "Test `~S' failed.~%" form))
23       (incf *failed-tests*)))
24    (incf *total-tests*)))
25
26 (defun expected-failure-fn (condition form)
27   (async
28    (cond
29      (condition
30       (if *use-html-output-p*
31           (format t "<font color='orange'>Test `~S' passed unexpectedly!</font>~%" form)
32           (format t "Test `~S' passed unexpectedly!~%" form))
33       (incf *unexpected-passes*))
34      (t
35       (format t "Test `~S' failed expectedly.~%" form)
36       (incf *expected-failures*)))
37    (incf *total-tests*)))
38
39
40 (defmacro test (condition)
41   `(test-fn ,condition ',condition))
42
43 (defmacro expected-failure (condition)
44   `(expected-failure-fn ,condition ',condition))
45
46 (defmacro test-equal (form value)
47   `(test (equal ,form, value)))
48
49 (setq *timestamp* (get-internal-real-time))
50
51 (terpri)