summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndrey Listopadov <andreyorst@gmail.com>2021-04-24 15:32:55 +0300
committerAndrey Listopadov <andreyorst@gmail.com>2021-04-24 15:35:15 +0300
commita8948ed1964033a437933db8c687d8c8e26bde44 (patch)
treeff8b31a2155b5360bc94aea44c8bf99394e76efa /tests
parent54294f7c864b9597c3775793015f600b1022594f (diff)
fix: move test library to separate project
Diffstat (limited to 'tests')
-rw-r--r--tests/core.fnl2
-rw-r--r--tests/fn.fnl2
-rw-r--r--tests/macros.fnl2
-rw-r--r--tests/test.fnl136
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]}})