Source
(defun perform-random-testing (generators body)
(loop
with random-state = *random-state*
with total-counter = *max-trials*
with counter = *num-trials*
with run-at-least-once = nil
until (or (zerop total-counter)
(zerop counter))
do (let ((result (perform-random-testing/run-once generators body)))
(ecase (first result)
(:pass
(decf counter)
(decf total-counter)
(setf run-at-least-once t))
(:no-tests
(add-result 'for-all-test-no-tests
:reason "No tests"
:random-state random-state)
(return-from perform-random-testing nil))
(:guard-conditions-failed
(decf total-counter))
(:fail
(add-result 'for-all-test-failed
:reason "Found failing test data"
:random-state random-state
:failure-values (second result)
:result-list (third result))
(return-from perform-random-testing nil))))
finally (if run-at-least-once
(add-result 'for-all-test-passed)
(add-result 'for-all-test-never-run
:reason "Guard conditions never passed"))))
Source Context