From e7bae75ddfb676cc4c0ee22a9339a9a79c837c4a Mon Sep 17 00:00:00 2001 From: Andrey Orst Date: Fri, 23 Oct 2020 22:18:07 +0300 Subject: Changes - add runtime check to into - add sort of a test framework - remove mapkv in favor of generalized mapv that works both for sequences and tables - add more tests - update doc --- test.fnl | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) (limited to 'test.fnl') diff --git a/test.fnl b/test.fnl index cb26858..050dd85 100644 --- a/test.fnl +++ b/test.fnl @@ -1,24 +1,45 @@ +(import-macros {: fn*} :macros.fn) + ;; requires `eq?' from core.fnl to be available at runtime -(fn assert-eq [expr1 expr2 msg] +(fn* assert-eq + ([expr1 expr2] + (assert-eq expr1 expr2 'nil)) + ([expr1 expr2 msg] `(let [left# ,expr1 right# ,expr2 view# (require :fennelview)] (assert (eq? left# right#) (or ,msg (.. "equality assertion failed - Left: " (view# ,expr1) " - Right: " (view# ,expr2) "\n"))))) + Left: " (view# left#) " + Right: " (view# right#) "\n")))))) -(fn assert-ne [expr1 expr2 msg] +(fn* assert-ne + ([expr1 expr2] + (assert-ne expr1 expr2 'nil)) + ([expr1 expr2 msg] `(let [left# ,expr1 right# ,expr2 view# (require :fennelview)] (assert (not (eq? left# right#)) (or ,msg (.. "unequality assertion failed - Left: " (view# ,expr1) " - Right: " (view# ,expr2) "\n"))))) + Left: " (view# left#) " + Right: " (view# right#) "\n")))))) + +(fn* assert* + ([expr] + (assert* expr 'nil)) + ([expr msg] + `(assert ,expr (.. "assertion failed for " (or ,msg ,(tostring expr)))))) -(fn assert* [expr msg] - `(assert ,expr (.. "assertion failed for " ,(or msg (tostring expr))))) +(fn* test + ;"define test function, print its name and run it." + [name docstring & body] + `(do (fn ,name [] + ,(or docstring nil) + ((or table.unpack unpack) ,body)) + (io.stderr:write (.. "running: " ,(tostring name) "\n")) + (,name))) {: assert-eq : assert-ne - : assert*} + : assert* + : test} -- cgit v1.2.3