diff options
Diffstat (limited to 'test.fnl')
| -rw-r--r-- | test.fnl | 39 |
1 files changed, 30 insertions, 9 deletions
@@ -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} |