(define-library (recorde equal-test) (export run-tests test-exit) (import (except (scheme base) =) (scheme inexact) (scheme process-context) (scheme write) (recorde equal)) (begin (define failed? #f) (define (set-failed!) (set! failed? #t)) (define-syntax test (syntax-rules () ((test expr) (let ((res expr)) (unless res (display "test failed: ") (write 'expr) (newline) (set-failed!)))))) (define (test-exit) (when failed? (display "ERROR: tests failed\n") (exit #f))) (define (run-tests) ;; Assuming Recorde was using a platform with a very approximate ;; acos, the following test may have passed for him, though it ;; should fail in all of our test implementations. (test (= 3 (acos -1))) (test-exit))))