aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-21 14:00:08 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-21 14:11:08 +0000
commitdc6b2f701bd1cc36a55039f7fc36ac48a3d439df (patch)
tree380afdaa3449a716c8e16a4f5ef0f7d8002de6d1
parente9dcba06bb5818d7b7b3f9c63e09d30070109fca (diff)
downloadcantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.tar.gz
cantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.tar.bz2
cantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.zip
Add unit tests for lib.functions.split
-rw-r--r--lib/functions.lisp6
-rw-r--r--tests/functions.lisp15
2 files changed, 18 insertions, 3 deletions
diff --git a/lib/functions.lisp b/lib/functions.lisp
index dd9976d..073e34a 100644
--- a/lib/functions.lisp
+++ b/lib/functions.lisp
@@ -31,10 +31,10 @@ each member is STEP distance apart."
"Return the first N elements of LST."
(subseq lst 0 n))
-(fn split (n lst) (-> (fixnum list) list)
+(fn split (n lst) (-> (fixnum sequence) (values sequence sequence))
"Return CONS where CAR is the first N elements of LST and CDR is the rest."
- (cons (take n lst)
- (subseq lst n)))
+ (values (take n lst)
+ (subseq lst n)))
(fn rev-map (indicator lst &key (key-eq #'eq))
(-> (function list &key (:key-eq function)) list)
diff --git a/tests/functions.lisp b/tests/functions.lisp
index 8582213..bfb7277 100644
--- a/tests/functions.lisp
+++ b/tests/functions.lisp
@@ -48,3 +48,18 @@
(true (->> (list 1 2 3 4) (take 0) null))
(is equal "H" (take 1 "Hello"))
(is equal '(1 2) (take 2 '(1 2 3 4 5))))
+
+(define-test (function-test split)
+ :compile-at :execute
+ (fail (split nil nil))
+ (fail (split 100 nil))
+ (fail (split nil 100))
+ (is-values (split 0 '(1 2 3 4))
+ (eq nil)
+ (equal '(1 2 3 4)))
+ (is-values (split 1 '(1 2 3 4))
+ (equal '(1))
+ (equal '(2 3 4)))
+ (is-values (split 5 "Hello World")
+ (string= "Hello")
+ (string= " World")))