diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/macros.fnl | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/macros.fnl b/tests/macros.fnl index 9ac9d95..e387eb2 100644 --- a/tests/macros.fnl +++ b/tests/macros.fnl @@ -203,3 +203,35 @@ (let [a [:a 1 :b 2]] (assert-eq (empty a) []) (assert-eq (getmetatable (empty a)) {:cljlib/type :seq})))) + +(deftest try + (testing "try" + (assert-eq (try (+ 1 2 3)) 6) + (assert-eq (try (+ 1 2 3) (catch _ 0) (finally 10)) 6) + (assert-eq (try (+ 1 2 3 nil) (catch _ 0) (finally 10)) 0) + (assert-eq (try (+ 1 2 3 nil) (catch _) (finally 10)) nil)) + (testing "catch-all" + (assert-eq (try + (error 10) + (catch _ :pass)) + :pass) + (assert-eq (try + (error 10) + (catch err err)) + 10)) + (testing "finally" + (let [tbl []] + (try + (try + (finally (table.insert tbl 1))) + (try + (error 10) + (catch _ (table.insert tbl 2)) + (finally (table.insert tbl 3))) + (try + (error 20) + (finally (table.insert tbl 4))) + (catch _ (table.insert tbl 5)) + (catch 20 (table.insert tbl 6)) + (finally (table.insert tbl 7))) + (assert-eq tbl [1 2 3 4 5 7])))) |