Refactoring Test Lib
After learning a little more, I decided to apply what I have learnt to make our barebones testing library even more minimal.
Before (LOC 14):
(defmacro make-test (name predicate)
`(lambda ()
(let ((p ,predicate))
(if p
(format t "Test `~A` passed~%" ,name)
(format t "Test `~A` failed~%" ,name))
p)))
(defun run-tests (&rest tests)
(let* ((score (lambda (p) (if p 1 0)))
(run-test (lambda (test) (funcall test)))
(scores (map 'list score (map 'list run-test tests)))
(num-tests (length scores))
(num-passes (reduce #'+ scores)))
(format t "~A out of ~A tests passed~%" num-passes num-tests)))
After (LOC 12):
Read more...