diff --git a/test/functional-map.lisp b/test/functional-map.lisp index ac13ee063a82f8117aa1805680f4f8d39d42e96b..58f3a4ca8f1a60e1176e265fdf96845e3fe81ee1 100644 --- a/test/functional-map.lisp +++ b/test/functional-map.lisp @@ -58,6 +58,77 @@ i (check-invariant i (join i (from-alist i *al-2*) (from-alist i *al-3*)))))) + + ;; insert + (is (equal '((nil)) (alist-from i (insert i () nil nil)))) + (is (equal-alist '((1 . "1") (2 . "2") (3 . "3")) + (alist-from (insert i (from-alist i '((1 . "1") (2 . "2") (3 . "3"))))))) + (is (= 101 (length (alist-from i (insert i (from-alist i *al-1*) 101 "101"))))) + + ;; drop (UNTESTED) + (multiple-value-bind (r d b) + (drop i (from-alist i '()) nil) + (is (equal r nil)) + (is (equal d nil)) + (is (equal b nil))) + (multiple-value-bind (r d b) + (drop i (from-alist i '((1 . "1") (2 . "2"))) 1) + (is (equal r '((2 . "2")))) + (is (equal d "1")) + (is (equal b t))) + (multiple-value-bind (r d b) + (drop i (from-alist i *al-1*) 1) + (is (= (length r) 99)) + (is (equal d "1")) + (is (equal b t))) + + ;; first-key-value + (multiple-value-bind (k v b) + (first-key-value i ()) + (is (eql r nil)) + (is (eql d nil)) + (is (eql b nil))) + + (multiple-value-bind (k v b) + (first-key-value i (from-alist i *al-2*)) + (is (= k 2)) + (is (equal v "2")) + (is (equal b t))) + + (multiple-value-bind (k v b) + (first-key-value i (from-alist i *alist-100-latin*)) + (is (= k 1)) + (is (equal v "I")) + (is (equal b t))) + + ;; decons + (multiple-value-bind (r k v b) + (decons i ()) + (is (eql r nil)) + (is (eql k nil)) + (is (eql v nil)) + (is (eql b nil))) + + ;; FIXME: does not work for all interfaces + (multiple-value-bind (r k v b) + (decons i (from-alist i *alist-10-latin*)) + (declare (ignorable k)) + (is (= k 1)) + (is (equal v "I")) + (is (equal b t))) + + ;; fold-left + ;; fold-right + ;; for-each + ;; join + ;; divide + ;; size + ;; join/list + ;; divide/list + ;; update-key + ;; map/2 + ;; convert + t) (defmethod interface-test :after ((i <integer-map>)) @@ -75,3 +146,4 @@ (deftest test-pure-map-interfaces () (dolist (i (list <alist> <im> <hash-table> <fmim>)) (interface-test i))) +