From 0b34a9196718e030c9e8c9a0095aec8f0da58425 Mon Sep 17 00:00:00 2001 From: David Pirotte Date: Sun, 15 Jan 2017 17:49:10 -0200 Subject: [PATCH] Unit-test 2 new APIs * src/unit-test.scm: New assert-false procedure, new assert macro: both take an expression as their respective argument; assert-false will throw a 'test-failed-exception unless expression returns #f; assert will throw a 'test-failed-exception if expression raises an exception. --- src/unit-test.scm | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/unit-test.scm b/src/unit-test.scm index a46b6fc..3adf971 100644 --- a/src/unit-test.scm +++ b/src/unit-test.scm @@ -26,6 +26,7 @@ #:use-module (ice-9 pretty-print) #:export (assert-equal assert-true + assert-false assert-numeric-= tests-run @@ -46,7 +47,8 @@ run-all-defined-test-cases exit-with-summary) - #:export-syntax (assert-exception)) + #:export-syntax (assert + assert-exception)) ;; Utility method for finding an object's method given its name. The @@ -105,31 +107,48 @@ (display " got: ") (write got)))))) +(define (assert-false got) + (if got + (throw 'test-failed-exception + (with-output-to-string + (lambda () + (display "assert-false: ") + (display " got: ") + (write got)))))) + (define (assert-numeric-= expected got precision) (if (> (abs (- expected got)) precision) (throw 'test-failed-exception (with-output-to-string (lambda () (display "assert-numeric-=: expected:\n") - (pretty-print expected) - (display " precision: ") - (pretty-print precision) + (pretty-print expected) + (display " precision: ") + (pretty-print precision) (display " got: ") (write got)))))) +(define-macro (assert expression) + `(catch #t + (lambda () ,expression) + (lambda (key . args) + (throw + 'test-failed-exception + (format #f "assert: exception on ~S" + ',expression))))) (define-macro (assert-exception expression) `(catch #t - (lambda () - ,expression - (throw - 'test-failed-exception - (format #f "assert-exception: no exception on ~S" - ',expression))) - (lambda (key . args) - (case key - ((test-failed-exception) (apply throw key args)) - (else #t))))) + (lambda () + ,expression + (throw + 'test-failed-exception + (format #f "assert-exception: no exception on ~S" + ',expression))) + (lambda (key . args) + (case key + ((test-failed-exception) (apply throw key args)) + (else #t))))) ;;;---------------------------------------------------------------- -- 2.11.0