diff options
| author | Andrey Orst <andreyorst@gmail.com> | 2020-10-23 22:18:07 +0300 |
|---|---|---|
| committer | Andrey Orst <andreyorst@gmail.com> | 2020-10-23 22:18:07 +0300 |
| commit | e7bae75ddfb676cc4c0ee22a9339a9a79c837c4a (patch) | |
| tree | 416721b8a3a8d4e7510f3a8c3cbceb89dda4a055 /test.fnl | |
| parent | e16763df4de9e198adf48d746407d43fa5538221 (diff) | |
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
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} |