summaryrefslogtreecommitdiff
path: root/test.fnl
diff options
context:
space:
mode:
authorAndrey Orst <andreyorst@gmail.com>2020-10-23 22:18:07 +0300
committerAndrey Orst <andreyorst@gmail.com>2020-10-23 22:18:07 +0300
commite7bae75ddfb676cc4c0ee22a9339a9a79c837c4a (patch)
tree416721b8a3a8d4e7510f3a8c3cbceb89dda4a055 /test.fnl
parente16763df4de9e198adf48d746407d43fa5538221 (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.fnl39
1 files changed, 30 insertions, 9 deletions
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}