~ chicken-core (chicken-5) 3ca8ae924d34b3184531687f998f9f58735ebd5e
commit 3ca8ae924d34b3184531687f998f9f58735ebd5e
Author: Moritz Heidkamp <moritz@twoticketsplease.de>
AuthorDate: Sun May 26 15:51:38 2013 +0200
Commit: Moritz Heidkamp <moritz@twoticketsplease.de>
CommitDate: Sun May 26 15:51:38 2013 +0200
Clean up R7RS test helpers code and add test-error
diff --git a/tests/r7rs-tests.scm b/tests/r7rs-tests.scm
index ca6ff807..c322a349 100644
--- a/tests/r7rs-tests.scm
+++ b/tests/r7rs-tests.scm
@@ -1,27 +1,49 @@
;; R7RS Tests
;; Copied from R4RS tests
-(define cur-section '())(define errs '())
-(define SECTION (lambda args
- (display "SECTION") (write args) (newline)
- (set! cur-section args) #t))
-(define record-error (lambda (e) (set! errs (cons (list cur-section e) errs))))
-
-(define test
- (lambda (expect fun . args)
- (write (cons fun args))
- (display " ==> ")
- ((lambda (res)
- (write res)
- (newline)
- (cond ((not (equal? expect res))
- (record-error (list res expect (cons fun args)))
- (display " BUT EXPECTED ")
- (write expect)
- (newline)
- #f)
- (else #t)))
- (if (procedure? fun) (apply fun args) (car args)))))
+(define cur-section '())
+
+(define errs '())
+
+(define (SECTION . args)
+ (newline)
+ (write (cons 'SECTION args))
+ (newline)
+ (newline)
+ (set! cur-section args) #t)
+
+(define (record-error e)
+ (set! errs (cons (list cur-section e) errs)))
+
+(define (test expect fun . args)
+ (write (cons fun args))
+ (display " ==> ")
+ (let ((res (if (procedure? fun) (apply fun args) (car args))))
+ (write res)
+ (newline)
+ (if (equal? expect res)
+ #t
+ (begin
+ (record-error (list res expect (cons fun args)))
+ (display " BUT EXPECTED ")
+ (write expect)
+ (newline)
+ #f))))
+
+(define (test-error expected? fun . args)
+ (write (cons fun args))
+ (newline)
+ (handle-exceptions exn
+ (or (expected? exn)
+ (begin
+ (record-error (list exn expected? (cons fun args)))
+ (display " EXPECTED A DIFFERENT ERROR")
+ (newline)
+ #f))
+ (apply fun args)
+ (display " EXPECTED AN ERROR BUT DIDN'T GET ONE")
+ #f))
+
(define (report-errs)
(newline)
(if (null? errs) (display "Passed all tests")
Trap