~ 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