Add unit tests for lib.functions.split
This commit is contained in:
@@ -31,10 +31,10 @@ each member is STEP distance apart."
|
|||||||
"Return the first N elements of LST."
|
"Return the first N elements of LST."
|
||||||
(subseq lst 0 n))
|
(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."
|
"Return CONS where CAR is the first N elements of LST and CDR is the rest."
|
||||||
(cons (take n lst)
|
(values (take n lst)
|
||||||
(subseq lst n)))
|
(subseq lst n)))
|
||||||
|
|
||||||
(fn rev-map (indicator lst &key (key-eq #'eq))
|
(fn rev-map (indicator lst &key (key-eq #'eq))
|
||||||
(-> (function list &key (:key-eq function)) list)
|
(-> (function list &key (:key-eq function)) list)
|
||||||
|
|||||||
@@ -48,3 +48,18 @@
|
|||||||
(true (->> (list 1 2 3 4) (take 0) null))
|
(true (->> (list 1 2 3 4) (take 0) null))
|
||||||
(is equal "H" (take 1 "Hello"))
|
(is equal "H" (take 1 "Hello"))
|
||||||
(is equal '(1 2) (take 2 '(1 2 3 4 5))))
|
(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")))
|
||||||
|
|||||||
Reference in New Issue
Block a user