mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 10:27:41 +00:00
Improve delete-consecutive-dups doc precision and add test
* lisp/subr.el (delete-consecutive-dups): Document which element of each run is retained (the earliest in the list). This matters because it makes it safe to ignore the return value. * test/lisp/subr-tests.el (subr--delete-dups) (subr--delete-consecutive-dups): Add tests.
This commit is contained in:
parent
c640dc9ef5
commit
434ab2e088
2 changed files with 37 additions and 1 deletions
|
|
@ -768,7 +768,9 @@ one is kept. See `seq-uniq' for non-destructive operation."
|
|||
(defun delete-consecutive-dups (list &optional circular)
|
||||
"Destructively remove `equal' consecutive duplicates from LIST.
|
||||
First and last elements are considered consecutive if CIRCULAR is
|
||||
non-nil."
|
||||
non-nil.
|
||||
Of several consecutive `equal' occurrences, the one earliest in
|
||||
the list is kept."
|
||||
(let ((tail list) last)
|
||||
(while (cdr tail)
|
||||
(if (equal (car tail) (cadr tail))
|
||||
|
|
|
|||
|
|
@ -1171,5 +1171,39 @@ final or penultimate step during initialization."))
|
|||
(should-not (list-of-strings-p '("a" nil "b")))
|
||||
(should-not (list-of-strings-p '("a" "b" . "c"))))
|
||||
|
||||
(ert-deftest subr--delete-dups ()
|
||||
(should (equal (delete-dups nil) nil))
|
||||
(let* ((a (list "a" "b" "c"))
|
||||
(a-dedup (delete-dups a)))
|
||||
(should (equal a-dedup '("a" "b" "c")))
|
||||
(should (eq a a-dedup)))
|
||||
(let* ((a (list "a" "a" "b" "b" "a" "c" "b" "c" "a"))
|
||||
(a-b (cddr a)) ; link of first "b"
|
||||
(a-dedup (delete-dups a)))
|
||||
(should (equal a-dedup '("a" "b" "c")))
|
||||
(should (eq a a-dedup))
|
||||
(should (eq (cdr a-dedup) a-b))))
|
||||
|
||||
(ert-deftest subr--delete-consecutive-dups ()
|
||||
(should (equal (delete-consecutive-dups nil) nil))
|
||||
(let* ((a (list "a" "b" "c"))
|
||||
(a-dedup (delete-consecutive-dups a)))
|
||||
(should (equal a-dedup '("a" "b" "c")))
|
||||
(should (eq a a-dedup)))
|
||||
(let* ((a (list "a" "a" "b" "a" "a" "b" "b" "b" "c" "c" "a" "a"))
|
||||
(a-b (nthcdr 3 a)) ; link of third "a"
|
||||
(a-dedup (delete-consecutive-dups a)))
|
||||
(should (equal a-dedup '("a" "b" "a" "b" "c" "a")))
|
||||
(should (eq a a-dedup))
|
||||
(should (equal (nthcdr 2 a-dedup) a-b)))
|
||||
(let* ((a (list "a" "b" "a"))
|
||||
(a-dedup (delete-consecutive-dups a t)))
|
||||
(should (equal a-dedup '("a" "b")))
|
||||
(should (eq a a-dedup)))
|
||||
(let* ((a (list "a" "a" "b" "a" "a" "b" "b" "b" "c" "c" "a" "a"))
|
||||
(a-dedup (delete-consecutive-dups a t)))
|
||||
(should (equal a-dedup '("a" "b" "a" "b" "c")))
|
||||
(should (eq a a-dedup))))
|
||||
|
||||
(provide 'subr-tests)
|
||||
;;; subr-tests.el ends here
|
||||
|
|
|
|||
Loading…
Reference in a new issue