2 (:use :fiveam :common-lisp)
6 #:*do-tests-when-defined*
14 (in-package :fiveam.rt)
17 :description "Suite holding all tests defined via the RT compatability layer.")
23 (defvar *do-tests-when-defined* nil)
25 (defmacro deftest (name form &rest values)
27 (push (list ',name ',form (list ,@values)) *tests*)
29 (is-true (every #'equal (multiple-value-list ,name) (list ,@values))))
30 (when *do-tests-when-defined*
32 (setf *test* ',name)))
34 (defun do-test (&optional (name *test*))
36 (let ((results (run name)))
37 (if (every #'fiveam::test-passed-p result)
40 (explain (make-instance 'fiveam::detailed-text-explainer) results)
43 (defun get-test (&optional (name *test*))
44 (find name *tests* :test #'eql :key #'first))
46 (defun rem-test (&optional (name *test*))
49 (setf *tests* (delete name *tests* :test #'eql :key #'first))
50 (remhash name (fiveam::tests (get-test :rt)))
54 (defun rem-all-tests ()
55 (clrhash (fiveam::tests (get-test :rt)))
58 (defun do-tests (&optional (out *standard-output*))
61 nconc (run (get-test (first test))) into results
62 finally (explain (make-instance 'fiveam::detailed-text-explainer) results)
63 finally (return (every #'fiveam::test-passed-p results))))