blob: 7f5fd71b092bca0c4230b335cf5ab7c58a616667 [file] [log] [blame]
;; Little helper functions and macros for the run tests
(use-modules (ice-9 format))
(define (test-error error-format . args)
(display "Runtime check failed. ")
(apply format #t error-format args)
(newline)
(exit 1))
(define-macro (expect-true form)
`(if (not ,form)
(test-error "Expected true value of ~A" ',form)))
(define-macro (expect-false form)
`(if ,form
(test-error "Expected false value of ~A" ',form)))
(define-macro (expect-result expected-result-form equal? form)
`(let ((expected-result ,expected-result-form)
(result ,form))
(if (not (,equal? result expected-result))
(test-error "The result of ~A was ~A, expected ~A, which is not ~A"
',form result expected-result ',equal?))))
(define-macro (expect-throw tag-form form)
`(let ((tag ,tag-form))
(if (catch #t
(lambda ()
,form
#t)
(lambda (key . args)
(if (eq? key ,tag-form)
#f
(test-error "The form ~A threw to ~A (expected a throw to ~A)"
',form key tag))))
(test-error "The form ~A returned normally (expected a throw to ~A)"))))