summaryrefslogtreecommitdiff
path: root/test/fn.fnl
diff options
context:
space:
mode:
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
+ })))