Add more tests for cl-seq.el
* test/lisp/emacs-lisp/cl-seq-tests.el (cl--oddp-safe) (cl-subst-if-test, cl-subst-if-not-test, cl-nsubst-test) (cl-nsubst-if-test, cl-nsubst-if-not-test, cl-sublis-test) (cl-nsublis-test, cl-tree-equal-test): New tests.
This commit is contained in:
parent
25de262bd9
commit
fac9097b16
1 changed files with 89 additions and 0 deletions
|
@ -1067,5 +1067,94 @@ Additionally register an `ert-info' to help identify test failures."
|
|||
(should (cl-subsetp '(1 2) '(1 2 3 2)))
|
||||
(should (cl-subsetp () ())))
|
||||
|
||||
(defun cl--oddp-safe (x)
|
||||
(and (numberp x) (oddp x)))
|
||||
|
||||
(ert-deftest cl-subst-if-test ()
|
||||
(should (equal (cl-subst-if 'X #'cl--oddp-safe '(1 2 (3 4 5) 6))
|
||||
'(X 2 (X 4 X) 6)))
|
||||
(should (equal (cl-subst-if 'X #'cl--oddp-safe '(1 2 (3 4 5) 6)
|
||||
:key (lambda (x) (and (numberp x) (1+ x))))
|
||||
'(1 X (3 X 5) X))))
|
||||
|
||||
(ert-deftest cl-subst-if-not-test ()
|
||||
(should (equal (cl-subst-if-not 'X (lambda (x) (or (not (numberp x)) (oddp x)))
|
||||
'(1 2 (3 4 5) 6))
|
||||
'(1 X (3 X 5) X)))
|
||||
(should (equal (cl-subst-if-not 'X (lambda (x) (or (not (numberp x)) (oddp x)))
|
||||
'(1 2 (3 4 5) 6)
|
||||
:key (lambda (x) (and (numberp x) (1+ x))))
|
||||
'(X 2 (X 4 X) 6))))
|
||||
|
||||
(ert-deftest cl-nsubst-test ()
|
||||
(should (equal (let ((tree (list 'a 'b (list 'c 'd 'a) 'e)))
|
||||
(cl-nsubst 'X 'a tree))
|
||||
'(X b (c d X) e)))
|
||||
(should (equal (let ((tree (list 'a 'b (list 'c 'd 'a) 'e)))
|
||||
(cl-nsubst 'X 'a tree
|
||||
:test #'eq))
|
||||
'(X b (c d X) e)))
|
||||
(should (equal (let ((tree (list 'a 'b (list 'c 'd 'a) 'e)))
|
||||
(cl-nsubst 'X 'a tree
|
||||
:test-not (lambda (a b) (or (consp b) (eq a b)))))
|
||||
'(a X (X X a . X) X . X)))
|
||||
(should (equal (let ((tree (list (cons 1 'a) (cons 2 'b) (cons 3 'a))))
|
||||
(cl-nsubst 'X 'a tree
|
||||
:key #'cdr-safe))
|
||||
'(X (2 . b) X))))
|
||||
|
||||
(ert-deftest cl-nsubst-if-test ()
|
||||
(should (equal (let ((tree (list 1 2 (list 3 4 5) 6)))
|
||||
(cl-nsubst-if 'X #'cl--oddp-safe tree))
|
||||
'(X 2 (X 4 X) 6)))
|
||||
(should (equal (let ((tree (list 1 2 (list 3 4 5) 6)))
|
||||
(cl-nsubst-if 'X #'cl--oddp-safe tree
|
||||
:key (lambda (x) (and (numberp x) (1+ x)))))
|
||||
'(1 X (3 X 5) X))))
|
||||
|
||||
(ert-deftest cl-nsubst-if-not-test ()
|
||||
(should (equal (let ((tree (list 1 2 (list 3 4 5) 6)))
|
||||
(cl-nsubst-if-not 'X
|
||||
(lambda (x) (or (not (numberp x)) (oddp x)))
|
||||
tree))
|
||||
'(1 X (3 X 5) X)))
|
||||
(should (equal (let ((tree (list 1 2 (list 3 4 5) 6)))
|
||||
(cl-nsubst-if-not 'X
|
||||
(lambda (x) (or (not (numberp x)) (oddp x)))
|
||||
tree
|
||||
:key (lambda (x) (and (numberp x) (1+ x)))))
|
||||
'(X 2 (X 4 X) 6))))
|
||||
|
||||
(ert-deftest cl-sublis-test ()
|
||||
(should (equal (cl-sublis '((a . x) (b . y)) '(a b (a c)))
|
||||
'(x y (x c))))
|
||||
(should (equal (cl-sublis '((1 . x) (2 . y)) '(1 2 (3 4))
|
||||
:key (lambda (x) (and (numberp x) (1- x))))
|
||||
'(1 x (y 4))))
|
||||
(should (equal (cl-sublis '(("a" . x) ("b" . y)) '("a" "b" ("a" "c"))
|
||||
:test #'equal)
|
||||
'(x y (x "c"))))
|
||||
(should (equal (cl-sublis '(("a" . x) ("b" . y)) '("a" "b" ("a" "c"))
|
||||
:test-not #'equal)
|
||||
'x)))
|
||||
|
||||
(ert-deftest cl-nsublis-test ()
|
||||
(should (equal (let ((tree (list 'a 'b '(a c))))
|
||||
(cl-nsublis '((a . x) (b . y)) tree))
|
||||
'(x y (x c))))
|
||||
(should (equal (let ((tree (list '(1 . a) '(2 . b) '(3 . c))))
|
||||
(cl-nsublis '((a . x) (b . y)) tree))
|
||||
'((1 . x) (2 . y) (3 . c)))))
|
||||
|
||||
(ert-deftest cl-tree-equal-test ()
|
||||
(should (cl-tree-equal '(1 (2 3) 4) '(1 (2 3) 4)))
|
||||
(should-not (cl-tree-equal '(1 (2 3) 4) '(1 (2 3) 5)))
|
||||
(should (cl-tree-equal '(("a" . 1) ("b" . 2)) '(("a" . 1) ("b" . 2)) :test #'equal))
|
||||
(should-not (cl-tree-equal '(("a" . 1) ("b" . 2)) '(("a" . 1) ("b" . 3)) :test #'equal))
|
||||
(should (cl-tree-equal '(1 2 3) '(1 2 3) :key (lambda (x) (and x (1+ x)))))
|
||||
(should (cl-tree-equal '(a b c) '(a b c) :key #'symbol-name :test #'equal))
|
||||
(should-not (cl-tree-equal '(1 2 3) '(1 2 3) :test-not #'eq))
|
||||
(should (cl-tree-equal '(1 2 3) '(1 2 3) :key #'identity :test #'eq)))
|
||||
|
||||
(provide 'cl-seq-tests)
|
||||
;;; cl-seq-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue