summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndrey Listopadov <andreyorst@gmail.com>2021-02-15 21:15:59 +0300
committerAndrey Listopadov <andreyorst@gmail.com>2021-02-15 21:15:59 +0300
commitf3313b3b51c795411a75ec93714110ad1808a8ae (patch)
tree6e272cbd91865d081c9287dc7b4f011705e03a4b /tests
parent4e1bcfb658f77acc038ba4de00513f0fef4b458b (diff)
fix(macros): correct fn* method definition behavior
fn* now properly defines `self` as its first argument automatically.
Diffstat (limited to 'tests')
-rw-r--r--tests/fn.fnl16
-rw-r--r--tests/test.fnl9
2 files changed, 17 insertions, 8 deletions
diff --git a/tests/fn.fnl b/tests/fn.fnl
index 40dda8b..5697aab 100644
--- a/tests/fn.fnl
+++ b/tests/fn.fnl
@@ -61,16 +61,24 @@
(testing "fn* methods"
(local ns {:a 1 :b 2})
- (fn* ns:foo [self]
+ (fn* ns:foo []
(+ self.a self.b))
(assert-eq (ns:foo) 3)
(assert-not (pcall #(ns:foo 1)))
(assert-not (pcall #(ns:foo 1 2)))
(fn* ns:bar
- ([self x] (+ self.a x))
- ([self x y] (+ self.b x y)))
+ ([x] (+ self.a x))
+ ([x y] (+ self.b x y)))
(assert-eq (ns:bar -1) 0)
(assert-eq (ns:bar 10 20) 32)
(assert-not (pcall #(ns:bar)))
- (assert-not (pcall #(ns:bar 1 2 3)))))
+ (assert-not (pcall #(ns:bar 1 2 3))))
+
+ (testing "fn* anonymous calls"
+ (assert-eq ((fn* [])) (values))
+ (assert-eq ((fn* [] nil)) nil)
+ (assert-eq ((fn* [x] x) 5) 5)
+ (assert-eq ((fn* [a b c d e] [e d c b a]) 1 2 3 4 5) [5 4 3 2 1])
+ (assert-eq ((fn* ([x] x) ([x y] [y x])) 10) 10)
+ (assert-eq ((fn* ([x] x) ([x y] [y x])) 10 20) [20 10])))
diff --git a/tests/test.fnl b/tests/test.fnl
index 05da7be..43247d9 100644
--- a/tests/test.fnl
+++ b/tests/test.fnl
@@ -60,7 +60,7 @@ Deep compare values:
right# ,expr2
eq# ,(eq-fn)
fennel# (require :fennel)]
- (assert (eq# left# right#)
+ (assert (pick-values 1 (pcall #(do eq# left# right#)))
(or ,msg (.. "assertion failed for expression:
(= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ")
Left: " (fennel#.view left# {:one-line? true}) "
@@ -75,7 +75,7 @@ Deep compare values:
right# ,expr2
eq# ,(eq-fn)
fennel# (require :fennel)]
- (assert (not (eq# left# right#))
+ (assert (pick-values 1 (pcall #(not (eq# left# right#))))
(or ,msg (.. "assertion failed for expression:
(not= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ")
Left: " (fennel#.view left# {:one-line? true}) "
@@ -90,14 +90,15 @@ Deep compare values:
;; (assert-is (= 1 2 3))
;; => runtime error: assertion failed for (= 1 2 3)
```"
- `(assert ,expr
+ `(assert (pick-values 1 (pcall #(do ,expr)))
(.. "assertion failed: "
(or ,msg ,(view expr {:one-line? true})))))
+
(fn test.assert-not
[expr msg]
"Assert `expr` for not truth. Generates more verbose message if
`msg` is not set. Works the same as [`assert-is`](#assert-is)."
- `(assert (not ,expr)
+ `(assert (pick-values 1 (pcall #(not ,expr)))
(.. "assertion failed: "
(or ,msg ,(view expr {:one-line? true})))))