Add unit tests for lib.functions.split

This commit is contained in:
2025-02-21 14:00:08 +00:00
parent e9dcba06bb
commit dc6b2f701b
2 changed files with 18 additions and 3 deletions

View File

@@ -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)

View File

@@ -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")))