X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fseq.lisp;h=6538f21b979556e332422df5e33e6340341916a7;hb=HEAD;hp=ce1c8d66d39fa955247a01fc6eb4be20b4588566;hpb=ac02066a55d3a19c41a70ad5b71d02c49a28e282;p=jscl.git diff --git a/tests/seq.lisp b/tests/seq.lisp index ce1c8d6..6538f21 100644 --- a/tests/seq.lisp +++ b/tests/seq.lisp @@ -55,3 +55,40 @@ (test (equal (subseq nums 2 4) '(3 4))) ; Test that nums hasn't been altered: SUBSEQ should construct fresh lists (test (equal nums '(1 2 3 4 5)))) + +;;; REDUCE +(test (equal (reduce (lambda (x y) `(+ ,x ,y)) + '(1 2 3 4)) + '(+ (+ (+ 1 2) 3) 4))) + +(test (equal (reduce (lambda (x y) `(+ ,x ,y)) + '(1 2 3 4) + :from-end t) + '(+ 1 (+ 2 (+ 3 4))))) + +(test (equal (reduce #'+ nil) 0)) +(test (equal (reduce #'+ '(1)) 1)) +(test (equal (reduce #'+ nil :initial-value 1) 1)) + +(test (equal (reduce #'+ '() + :key #'1+ + :initial-value 100) + 100)) + +(test (equal (reduce #'+ '(100) :key #'1+) + 101)) + +; MISMATCH +(test (= (mismatch '(1 2 3) '(1 2 3 4 5 6)) 3)) +(test (= (mismatch '(1 2 3) #(1 2 3 4 5 6)) 3)) +(test (= (mismatch #(1 2 3) '(1 2 3 4 5 6)) 3)) +(test (= (mismatch #(1 2 3) #(1 2 3 4 5 6)) 3)) + +; SEARCH +(test (= (search '(1 2 3) '(4 5 6 1 2 3)) 3)) +(test (= (search '(1 2 3) #(4 5 6 1 2 3)) 3)) +(test (= (search #(1 2 3) '(4 5 6 1 2 3)) 3)) +(test (= (search #(1 2 3) #(4 5 6 1 2 3)) 3)) +(test (not (search '(foo) '(1 2 3)))) +(test (= (search '(1) '(4 5 6 1 2 3)) 3)) +(test (= (search #(1) #(4 5 6 1 2 3)) 3))