diff options
| author | Andrey Listopadov <andreyorst@gmail.com> | 2021-04-24 15:32:55 +0300 |
|---|---|---|
| committer | Andrey Listopadov <andreyorst@gmail.com> | 2021-04-24 15:35:15 +0300 |
| commit | a8948ed1964033a437933db8c687d8c8e26bde44 (patch) | |
| tree | ff8b31a2155b5360bc94aea44c8bf99394e76efa /tests | |
| parent | 54294f7c864b9597c3775793015f600b1022594f (diff) | |
fix: move test library to separate project
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/core.fnl | 2 | ||||
| -rw-r--r-- | tests/fn.fnl | 2 | ||||
| -rw-r--r-- | tests/macros.fnl | 2 | ||||
| -rw-r--r-- | tests/test.fnl | 136 |
4 files changed, 3 insertions, 139 deletions
diff --git a/tests/core.fnl b/tests/core.fnl index f76e58c..fb532d3 100644 --- a/tests/core.fnl +++ b/tests/core.fnl @@ -1,5 +1,5 @@ (require-macros :macros) -(require-macros :tests.test) +(require-macros :fennel-test.test) (macro require-module [module] `(local ,(collect [k (pairs (require module))] diff --git a/tests/fn.fnl b/tests/fn.fnl index 5697aab..9b99119 100644 --- a/tests/fn.fnl +++ b/tests/fn.fnl @@ -1,4 +1,4 @@ -(require-macros :tests.test) +(require-macros :fennel-test.test) (require-macros :macros) (deftest fn* diff --git a/tests/macros.fnl b/tests/macros.fnl index c3b54c9..ec8aebd 100644 --- a/tests/macros.fnl +++ b/tests/macros.fnl @@ -1,4 +1,4 @@ -(require-macros :tests.test) +(require-macros :fennel-test.test) (require-macros :macros) (deftest into diff --git a/tests/test.fnl b/tests/test.fnl deleted file mode 100644 index 7941f2c..0000000 --- a/tests/test.fnl +++ /dev/null @@ -1,136 +0,0 @@ -(local test {}) - -(fn eq-fn [] - ;; Returns recursive equality function. - ;; - ;; This function is able to compare tables of any depth, even if one of - ;; the tables uses tables as keys. - `(fn eq# [x# y#] - (if (= x# y#) - true - (and (= (type x#) :table) (= (type y#) :table)) - (do (var [res# count-x# count-y#] [true 0 0]) - (each [k# v# (pairs x#)] - (set res# (eq# v# ((fn deep-index# [tbl# key#] - (var res# nil) - (each [k# v# (pairs tbl#)] - (when (eq# k# key#) - (set res# v#) - (lua :break))) - res#) - y# k#))) - (set count-x# (+ count-x# 1)) - (when (not res#) - (lua :break))) - (when res# - (each [_# _# (pairs y#)] - (set count-y# (+ count-y# 1))) - (set res# (= count-x# count-y#))) - res#) - :else - false))) - -(fn test.assert-eq - [expr1 expr2 msg] - "Like `assert', except compares results of `expr1' and `expr2' for equality. -Generates formatted message if `msg' is not set to other message. - -# Example -Compare two expressions: - -``` fennel -;; (assert-eq 1 (+1 1)) -;; => runtime error: equality assertion failed -;; => Left: 1 -;; => Right: 3 -``` - -Deep compare values: - -``` fennel -;; (assert-eq [1 {[2 3] [4 5 6]}] [1 {[2 3] [4 5]}]) -;; => runtime error: equality assertion failed -;; => Left: [1 {[2 3] [4 5 6]}] -;; => Right: [1 {[2 3] [4 5]}] -```" - `(let [left# ,expr1 - right# ,expr2 - eq# ,(eq-fn) - fennel# (require :fennel) - (suc# res#) (pcall eq# left# right#)] - (if suc# - (assert res# (or ,msg (.. "assertion failed for expression: -(= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") - Left: " (fennel#.view left# {:one-line? true}) " - Right: " (fennel#.view right# {:one-line? true}) "\n"))) - (error (.. "in expression: -(= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") - " res#" \n"))))) - -(fn test.assert-ne - [expr1 expr2 msg] - "Assert for unequality. Like `assert', except compares results of -`expr1' and `expr2' for equality. Generates formatted message if -`msg' is not set to other message. Same as `assert-eq'." - `(let [left# ,expr1 - right# ,expr2 - eq# ,(eq-fn) - fennel# (require :fennel) - (suc# res#) (pcall eq# left# right#)] - (if suc# - (assert (not res#) (or ,msg (.. "assertion failed for expression: -(not= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") - Left: " (fennel#.view left# {:one-line? true}) " - Right: " (fennel#.view right# {:one-line? true}) "\n"))) - (error (.. "in expression: -(not= " ,(view expr1 {:one-line? true}) " " ,(view expr2 {:one-line? true}) ") - " res#" \n"))))) - -(fn test.assert-is - [expr msg] - "Assert `expr' for truth. Same as inbuilt `assert', except generates more - verbose message if `msg' is not set. - -``` fennel -;; (assert-is (= 1 2 3)) -;; => runtime error: assertion failed for (= 1 2 3) -```" - `(let [(suc# res#) (pcall #(do ,expr))] - (if suc# - (assert res# - (.. "assertion failed: " - (or ,msg ,(view expr {:one-line? true})))) - (error (.. "in expression: " - ,(view expr {:one-line? true}) " - " res#" \n"))))) - -(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'." - `(let [(suc# res#) (pcall #(not ,expr))] - (if suc# - (assert res# - (.. "assertion failed: " - (or ,msg ,(view expr {:one-line? true})))) - (error (.. "in expression: " - ,(view expr {:one-line? true}) " - " res#" \n"))))) - -(fn test.deftest - [name ...] - "Simple way of grouping tests with `name'." - `(do ,...)) - -(fn test.testing - [description ...] - "Print test `description' and run it." - `(do (io.stdout:write (.. "testing: " ,description "\n")) - ,...)) - -(setmetatable - test - {:__index - {:_DOC_ORDER [:deftest :testing - :assert-eq :assert-ne - :assert-is :assert-not]}}) |