ACONS
[jscl.git] / tests / list.lisp
index 3ff5515..7969b0b 100644 (file)
         (not (= (car (car foo))
                 (car (car bar))))))
 
+; TREE-EQUAL
+(test (tree-equal '(1 2 3) '(1 2 3)))
+(test (tree-equal '(1 (2 (3 4) 5) 6) '(1 (2 (3 4) 5) 6)))
+(test (tree-equal (cons 1 2) (cons 2 3)
+                  :test (lambda (a b) (not (= a b)))))
+
+; FIRST to TENTH
+(let ((nums '(1 2 3 4 5 6 7 8 9 10)))
+  (test (= (first   nums) 1))
+  (test (= (second  nums) 2))
+  (test (= (third   nums) 3))
+  (test (= (fourth  nums) 4))
+  (test (= (fifth   nums) 5))
+  (test (= (sixth   nums) 6))
+  (test (= (seventh nums) 7))
+  (test (= (eighth  nums) 8))
+  (test (= (ninth   nums) 9))
+  (test (= (tenth   nums) 10)))
+
+; TAILP
+(let* ((a (list 1 2 3))
+       (b (cdr a)))
+  (test (tailp b a))
+  (test (tailp a a)))
+(test (tailp 'a (cons 'b 'a)))
+
+; ACONS
+; FIXME: Write the alist in a more natural form once #72 has been fixed
+(test (equal (cons (cons 1 2) (list (cons 3 4)))
+             (acons 1 2 (list (cons 3 4)))))
+(test (equal (list (cons 1 2)) (acons 1 2 ())))
+
 ; SUBST
 ; Can't really test this until EQUAL works properly on lists