From 6b65999a1f565651fc48a076a7473b6e93f6357a Mon Sep 17 00:00:00 2001 From: Andrey Orst Date: Thu, 5 Nov 2020 21:37:47 +0300 Subject: feature(testing): move tests to separate directory. Also add some tests --- test/test.fnl | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 test/test.fnl (limited to 'test/test.fnl') diff --git a/test/test.fnl b/test/test.fnl new file mode 100644 index 0000000..4b40832 --- /dev/null +++ b/test/test.fnl @@ -0,0 +1,51 @@ +(import-macros {: fn*} :macros.fn) +;; requires `eq' from core.fnl to be available at runtime + +(fn* assert-eq + ([expr1 expr2] + (assert-eq expr1 expr2 nil)) + ([expr1 expr2 msg] + `(let [left# ,expr1 + right# ,expr2 + (res# view#) (pcall require :fennelview)] + (assert (eq left# right#) (or ,msg (.. "equality assertion failed + Left: " ((if res# view# tostring) left#) " + Right: " ((if res# view# tostring) right#) "\n")))))) + +(fn* assert-ne + ([expr1 expr2] + (assert-ne expr1 expr2 nil)) + ([expr1 expr2 msg] + `(let [left# ,expr1 + right# ,expr2 + (res# view#) (pcall require :fennelview)] + (assert (not (eq left# right#)) (or ,msg (.. "unequality assertion failed + Left: " ((if res# view# tostring) left#) " + Right: " ((if res# view# tostring) right#) "\n")))))) + +(fn* assert* + ([expr] + (assert* expr nil)) + ([expr msg] + `(assert ,expr (.. "assertion failed for " (or ,msg ,(tostring expr)))))) + +(fn* deftest [name docstring & tests] + "Simple way of grouping tests" + `(do + ,docstring + ,((or table.unpack _G.unpack) tests))) + +(fn* testing + "Define test function, print its name and run it." + [name & body] + (let [test-name (sym (.. (tostring name) "-test"))] + `(do (fn ,test-name [] + ,((or table.unpack _G.unpack) body)) + (io.stderr:write (.. "running: " ,(tostring test-name) "\n")) + (,test-name)))) + +{: assert-eq + : assert-ne + : assert* + : deftest + : testing} -- cgit v1.2.3