fix assert to return true value.
authorIan Price <ianprice90@googlemail.com>
Wed, 6 Apr 2011 12:51:44 +0000 (13:51 +0100)
committerAndy Wingo <wingo@pobox.com>
Mon, 11 Apr 2011 16:00:36 +0000 (18:00 +0200)
* module/rnrs/base.scm (assert): returns value instead of void.

* test-suite/tests/r6rs-base.test ("assert"): add test cases.

module/rnrs/base.scm
test-suite/tests/r6rs-base.test

index b867929..4cfd1d1 100644 (file)
  (define-syntax assert
    (syntax-rules ()
      ((_ expression)
-      (if (not expression)
+      (or expression
           (raise (condition
                   (make-assertion-violation)
                   (make-message-condition
index dfddf7c..df11d67 100644 (file)
@@ -19,6 +19,8 @@
 
 (define-module (test-suite test-r6rs-base)
   :use-module ((rnrs base) :version (6))
+  :use-module ((rnrs conditions) :version (6))
+  :use-module ((rnrs exceptions) :version (6))
   :use-module (test-suite lib))
 
 
   (pass-if (not (integer-valued? +0.01i)))
   (pass-if (not (integer-valued? -inf.0i))))
 
+(with-test-prefix "assert"
+  (pass-if "assert returns value" (= 1 (assert 1)))
+  (pass-if "assertion-violation"
+    (guard (condition ((assertion-violation? condition) #t))
+      (assert #f)
+      #f)))