Add the &optional n for BUTLAST
[jscl.git] / tests / list.lisp
index ffc672d..db44b9a 100644 (file)
 (test (let (foo)
         (mapc (lambda (x y z) (push (+ x y z) foo)) '(1 2) '(3) '(4 5 6))
         (equal foo '(8))))
+
+;; GETF
+(test (eq (getf '(a b c d) 'a) 'b))
+(test (null (getf '(a b c d) 'e)))
+(test (equal (let ((x (list 'a 1))) (setf (getf x 'a) 3) x) '(a 3)))
+(test (equal (let ((x (list 'a 1))) (incf (getf x 'a)) x) '(a 2)))
+
+;; GET-PROPERTIES
+(test (equal (multiple-value-list (get-properties '(a b c d) '(b d e))) '(NIL NIL NIL)))
+(test (equal (multiple-value-list (get-properties '(a b c d) '(b a c))) '(a b (a b c d))))
+(test (equal (multiple-value-list (get-properties '(a b c d) '(b c a))) '(a b (a b c d))))
+
+;; BUTLAST
+(test (equal (butlast '()) ()))
+(test (equal (butlast '(1)) ()))
+(test (equal (butlast '(1 2)) '(1)))
+(test (equal (butlast '(1 2 3 4 5)) '(1 2 3 4)))
+(test (equal '(1 2 3 4) (butlast '(1 2 3 4 5))))
+(test (equal (let ((thing '(1 2 3 4 5))) (butlast thing)) '(1 2 3 4)))
+(test (equal (let ((thing '(1 2 3 4 5))) (butlast thing) thing) '(1 2 3 4 5)))
+
+(test (equal (let ((thing '(1 2 3 4 5))) (butlast thing 0)) '(1 2 3 4 5)))
+(test (equal (let ((thing '(1 2 3 4 5))) (butlast thing 1)) '(1 2 3 4)))
+(test (equal (let ((thing '(1 2 3 4 5))) (butlast thing 2)) '(1 2 3)))
+(test (equal (let ((thing '())) (butlast thing 2)) '()))
+(test (equal (let ((thing '(1 2))) (butlast thing 2)) '()))
+(test (equal (let ((thing '())) (butlast thing 0)) '()))