(define (WITH-TEST-CASE-RUN name description thunk) (printf "Running test ~a (~a)...~%" name description) (thunk)) (define (WITH-TEST-SUITE-RUN name description thunk) (printf "Running suite ~a (~a)...~%" name description) (thunk)) (define (COMPONENT-TEST thunk) (thunk)) (define (NILADIC-TEST) 'bupkus) (define (MONADIC-TEST thunk) (thunk)) (define (POLYADIC-TEST thunks) (for-each (lambda (t) (t)) thunks)) (define (TEST-FAILURE args) (apply error args)) (define (TEST-FAILURE:PREDICATE-DATUM args) (apply error args)) (define (TEST-FAILURE:COMPARE-DATUM args) (apply error args)) (define (identity-procedure args) args) ;; WITH-TEST-CASE-RUN and WITH-TEST-SUITE-RUN can just print `Running test , ;; ...'; (NILADIC-TEST) can do nothing; (MONADIC-TEST ) can call ;; with zero arguments; (POLYADIC-TEST ) can call each element of ;; with zero arguments; (COMPONENT-TEST ) can call with zero ;; arguments; and... [20:38] ;; TEST-FAILURE and TEST-FAILURE:* can all just call ERROR.