summaryrefslogtreecommitdiff
path: root/test/fn.fnl
diff options
context:
space:
mode:
authorAndrey Orst <andreyorst@gmail.com>2020-11-05 21:37:47 +0300
committerAndrey Orst <andreyorst@gmail.com>2020-11-05 21:39:16 +0300
commit6b65999a1f565651fc48a076a7473b6e93f6357a (patch)
treed143581a580b06263522d105e0e01dfb0e4b9b9c /test/fn.fnl
parent11617c42a4fb249c4f7199ca5eba3b93518ded0a (diff)
feature(testing): move tests to separate directory. Also add some tests
Diffstat (limited to 'test/fn.fnl')
-rw-r--r--test/fn.fnl49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/fn.fnl b/test/fn.fnl
new file mode 100644
index 0000000..b9876ca
--- /dev/null
+++ b/test/fn.fnl
@@ -0,0 +1,49 @@
+(import-macros {: assert-eq : assert-ne : assert* : testing : deftest} :test.test)
+(import-macros {: meta} :macros.core)
+(local {: eq} (require :core)) ;; required for testing
+
+(import-macros {: fn* : fn&} :macros.fn)
+
+(deftest fn*
+ (testing fn*-meta
+ (fn* f
+ "docstring"
+ [x] x)
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ :fnl/arglist ["x"]})
+
+ (fn* f
+ "docstring"
+ ([x] x))
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ :fnl/arglist ["x"]})
+
+ (fn* f
+ "docstring"
+ ([x] x)
+ ([x y] (+ x y)))
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ :fnl/arglist ["\n [x]"
+ "\n [x y]"]})
+
+ (fn* f
+ "docstring"
+ ([x] x)
+ ([x y] (+ x y))
+ ([x y & z] (+ x y)))
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ :fnl/arglist ["\n [x]"
+ "\n [x y]"
+ "\n [x y & z]"]})))
+
+(deftest fn&
+ (testing fn&-meta
+ (fn& f "docstring" [x] x)
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ ;; :fnl/arglist ["x"] ;; TODO: why this works only in REPL?
+ })
+
+ (fn& f "docstring" [...] [...])
+ (assert-eq (meta f) {:fnl/docstring "docstring"
+ ;; :fnl/arglist ["..."] ;; TODO: same as above
+ })))