Expected test failures and unexpected passes
[jscl.git] / tests.lisp
1 (defvar *total-tests* 0)
2 (defvar *passed-tests* 0)
3 (defvar *failed-tests* 0)
4
5 (defvar *expected-failures* 0)
6 (defvar *unexpected-passes* 0)
7
8 (defvar *timestamp* nil)
9
10 (defmacro test (condition)
11   `(progn
12      (cond
13        (,condition
14         (write-line ,(concat "Test `" (prin1-to-string condition) "' passed"))
15         (incf *passed-tests*))
16        (t
17         (write-line ,(concat "Test `" (prin1-to-string condition) "' failed."))
18         (incf *failed-tests*)))
19      (incf *total-tests*)))
20
21 (defmacro expected-failure (condition)
22   `(progn
23      (cond
24        (,condition
25         (write-line ,(concat "Test `" (prin1-to-string condition) "' passed unexpectedly!"))
26         (incf *unexpected-passes*))
27        (t
28         (write-line ,(concat "Test `" (prin1-to-string condition) "' failed expectedly."))
29         (incf *expected-failures*)))
30      (incf *total-tests*)))
31
32 (write-line "Running tests...")
33 (write-line "")
34
35 (setq *timestamp* (get-internal-real-time))