diff --git a/retropikzel/assert.scm b/retropikzel/assert.scm index 4417b87..450679b 100644 --- a/retropikzel/assert.scm +++ b/retropikzel/assert.scm @@ -1,15 +1,4 @@ (define-syntax assert (syntax-rules () - ((_ check body) - (let ((result body)) - (when (not (check result)) - (error "assertion error: " check body result)) - result)))) - -(define-syntax asserts - (syntax-rules () - ((_ (check ...) body) - (let ((result body)) - (when (not (check result)) (error "assertion error: " check body result)) ... - result)))) - + ((_ check val err-msg) + (unless (check val) (error err-msg val))))) diff --git a/retropikzel/assert.sld b/retropikzel/assert.sld index ccd498f..68db746 100644 --- a/retropikzel/assert.sld +++ b/retropikzel/assert.sld @@ -1,7 +1,10 @@ +;; SPDX-License-Identifier: LGPL +;; VERSION: 0.1.0 +;; DESCRIPTION: Assert +;; ADDITIONAL_LIBRARIES: retropikzel/assert/pass.sld + (define-library (retropikzel assert) - (import (scheme base) - (scheme write)) - (export assert - asserts) + (import (scheme base)) + (export assert) (include "assert.scm")) diff --git a/retropikzel/assert/LICENSE b/retropikzel/assert/LICENSE new file mode 100644 index 0000000..6989ebe --- /dev/null +++ b/retropikzel/assert/LICENSE @@ -0,0 +1 @@ +LGPL diff --git a/retropikzel/assert/pass.scm b/retropikzel/assert/pass.scm new file mode 100644 index 0000000..1ef8905 --- /dev/null +++ b/retropikzel/assert/pass.scm @@ -0,0 +1 @@ +(define-syntax assert (syntax-rules () ((_ check val err-msg) #t))) diff --git a/retropikzel/assert/pass.sld b/retropikzel/assert/pass.sld new file mode 100644 index 0000000..4b52f69 --- /dev/null +++ b/retropikzel/assert/pass.sld @@ -0,0 +1,9 @@ +;; SPDX-License-Identifier: LGPL +;; VERSION: 0.1.0 +;; DESCRIPTION: Assert passtrough + +(define-library + (retropikzel assert pass) + (import (scheme base)) + (export assert) + (include "pass.scm")) diff --git a/retropikzel/assert/test.scm b/retropikzel/assert/test.scm index 2b8ee0e..f70fcd1 100644 --- a/retropikzel/assert/test.scm +++ b/retropikzel/assert/test.scm @@ -10,12 +10,17 @@ (test-begin "assert") -(test-equal 1 (assert number? 1)) +(define (plus a b) + (assert integer? a "a must be integer") + (assert integer? b "b must be integer") + (+ a b)) + +(write (plus 5 5)) +(newline) +(test-equal 10 (plus 5 5)) (test-equal 'error (guard (condition (else 'error)) - (assert number? "string"))) - -(test-equal 1 (asserts (number? (lambda (i) (= i 1))) 1)) + (plus 5 'a))) (test-end "assert")