diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-21 14:00:08 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-21 14:11:08 +0000 |
commit | dc6b2f701bd1cc36a55039f7fc36ac48a3d439df (patch) | |
tree | 380afdaa3449a716c8e16a4f5ef0f7d8002de6d1 | |
parent | e9dcba06bb5818d7b7b3f9c63e09d30070109fca (diff) | |
download | cantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.tar.gz cantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.tar.bz2 cantedraw-dc6b2f701bd1cc36a55039f7fc36ac48a3d439df.zip |
Add unit tests for lib.functions.split
-rw-r--r-- | lib/functions.lisp | 6 | ||||
-rw-r--r-- | tests/functions.lisp | 15 |
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"))) |