reader support for ## and #=
[jscl.git] / tests / list.lisp
index 72da656..2f1b57c 100644 (file)
   (test (tailp a a)))
 (test (tailp 'a (cons 'b 'a)))
 
+; ACONS
+(test (equal '((1 . 2) (3 . 4))
+             (acons 1 2 '((3 . 4)))))
+(test (equal '((1 . 2)) (acons 1 2 ())))
+
+; PAIRLIS
+(test (equal '((1 . 3) (0 . 2))
+             (pairlis '(0 1) '(2 3))))
+(test (equal '((1 . 2) (a . b))
+             (pairlis '(1) '(2) '((a . b)))))
+
+; COPY-ALIST
+(let* ((alist '((1 . 2) (3 . 4)))
+       (copy (copy-alist alist)))
+  (test (not (eql alist copy)))
+  (test (not (eql (car alist) (car copy))))
+  (test (equal alist copy)))
+
+; ASSOC and RASSOC
+(let ((alist '((1 . 2) (3 . 4))))
+  (test (equal (assoc  1 alist) '(1 . 2)))
+  (test (equal (rassoc 2 alist) '(1 . 2)))
+  (test (not   (assoc  2 alist)))
+  (test (not   (rassoc 1 alist))))
+
+; MEMBER
+(test (equal (member 2 '(1 2 3)) '(2 3)))
+(test (not   (member 4 '(1 2 3))))
+(test (equal (member 4 '((1 . 2) (3 . 4)) :key #'cdr) '((3 . 4))))
+(test (member '(2) '((1) (2) (3)) :test #'equal))
+
+; ADJOIN
+(test (equal (adjoin 1 '(2 3))   '(1 2 3)))
+(test (equal (adjoin 1 '(1 2 3)) '(1 2 3)))
+(test (equal (adjoin '(1) '((1) (2)) :test #'equal) '((1) (2))))
+
+; INTERSECTION
+(test (equal (intersection '(1 2) '(2 3)) '(2)))
+(test (not (intersection '(1 2 3) '(4 5 6))))
+(test (equal (intersection '((1) (2)) '((2) (3)) :test #'equal) '((2))))
+
 ; SUBST
 ; Can't really test this until EQUAL works properly on lists