aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-21 14:05:46 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-21 14:11:08 +0000
commit1edd618b42821f26b0a31ae63f393c09259c046b (patch)
tree9ec1f025dc400750671fa3cad9183955214cf8b6 /tests
parentdc6b2f701bd1cc36a55039f7fc36ac48a3d439df (diff)
downloadcantedraw-1edd618b42821f26b0a31ae63f393c09259c046b.tar.gz
cantedraw-1edd618b42821f26b0a31ae63f393c09259c046b.tar.bz2
cantedraw-1edd618b42821f26b0a31ae63f393c09259c046b.zip
Add unit tests for lib.functions.rev-map
Diffstat (limited to 'tests')
-rw-r--r--tests/functions.lisp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/functions.lisp b/tests/functions.lisp
index bfb7277..b629c1f 100644
--- a/tests/functions.lisp
+++ b/tests/functions.lisp
@@ -63,3 +63,33 @@
(is-values (split 5 "Hello World")
(string= "Hello")
(string= " World")))
+
+(define-test (function-test rev-map)
+ :depends-on (range)
+ :compile-at :execute
+ (fail (rev-map nil nil))
+ (fail (rev-map "a string" "another string" :key-eq "not a function"))
+ (true (->> nil (rev-map #'identity) null))
+ (let ((res (rev-map #'evenp (range 1 7))))
+ (false (null res))
+ (is equal 2 (length res))
+ (is equal 3 (->> (assoc t res) cdr length))
+ (is equal 3 (->> (assoc nil res) cdr length))
+ (true (->> (assoc t res) cdr (every #'evenp)))
+ (true (->> (assoc nil res) cdr (every #'oddp))))
+ (let* ((mod* (lambda (n) (mod n 3)))
+ (res (rev-map mod* (range 1 12))))
+ (false (null res))
+ (is equal 3 (length res))
+ (is equal 3 (->> (assoc 0 res) cdr length))
+ (is equal 4 (->> (assoc 1 res) cdr length))
+ (is equal 4 (->> (assoc 2 res) cdr length))
+ (true (->> (assoc 0 res) cdr (every (lambda (x) (= (mod x 3) 0)))))
+ (true (->> (assoc 1 res) cdr (every (lambda (x) (= (mod x 3) 1)))))
+ (true (->> (assoc 2 res) cdr (every (lambda (x) (= (mod x 3) 2))))))
+ (let ((res (rev-map #'identity "lots of letters")))
+ (false (null res))
+ (is equal 2 (->> (assoc #\l res) cdr length))
+ (is equal 3 (->> (assoc #\t res) cdr length))
+ (is equal 2 (->> (assoc #\space res) cdr length))
+ (is equal 2 (->> (assoc #\s res) cdr length))))