X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/876d210333969ec8c6723216917150c7b532082e..4c77f20e144dc409e3c59abdb7105fb0db41ee54:/packages/seq/tests/seq-tests.el diff --git a/packages/seq/tests/seq-tests.el b/packages/seq/tests/seq-tests.el index 7f6e06cc4..cf3da78b1 100644 --- a/packages/seq/tests/seq-tests.el +++ b/packages/seq/tests/seq-tests.el @@ -22,7 +22,7 @@ ;;; Commentary: -;; Tests for sequences.el +;; Tests for seq.el ;;; Code: @@ -92,6 +92,16 @@ Evaluate BODY for each created sequence. (with-test-sequences (seq '()) (should (seq-empty-p (seq-take-while #'test-sequences-oddp seq))))) +(ert-deftest test-seq-map-indexed () + (should (equal (seq-map-indexed (lambda (elt i) + (list elt i)) + nil) + nil)) + (should (equal (seq-map-indexed (lambda (elt i) + (list elt i)) + '(a b c d)) + '((a 0) (b 1) (c 2) (d 3))))) + (ert-deftest test-seq-filter () (with-test-sequences (seq '(6 7 8 9 10)) (should (equal (seq-filter #'test-sequences-evenp seq) '(6 8 10))) @@ -124,21 +134,32 @@ Evaluate BODY for each created sequence. (should (eq (seq-reduce #'+ seq 0) 0)) (should (eq (seq-reduce #'+ seq 7) 7)))) -(ert-deftest test-seq-some-p () +(ert-deftest test-seq-some () (with-test-sequences (seq '(4 3 2 1)) - (should (= (seq-some-p #'test-sequences-evenp seq) 4)) - (should (= (seq-some-p #'test-sequences-oddp seq) 3)) - (should-not (seq-some-p (lambda (elt) (> elt 10)) seq))) + (should (seq-some #'test-sequences-evenp seq)) + (should (seq-some #'test-sequences-oddp seq)) + (should-not (seq-some (lambda (elt) (> elt 10)) seq))) (with-test-sequences (seq '()) - (should-not (seq-some-p #'test-sequences-oddp seq)))) + (should-not (seq-some #'test-sequences-oddp seq))) + (should (seq-some #'null '(1 nil 2)))) -(ert-deftest test-seq-contains-p () +(ert-deftest test-seq-find () + (with-test-sequences (seq '(4 3 2 1)) + (should (= 4 (seq-find #'test-sequences-evenp seq))) + (should (= 3 (seq-find #'test-sequences-oddp seq))) + (should-not (seq-find (lambda (elt) (> elt 10)) seq))) + (should-not (seq-find #'null '(1 nil 2))) + (should-not (seq-find #'null '(1 nil 2) t)) + (should-not (seq-find #'null '(1 2 3))) + (should (seq-find #'null '(1 2 3) 'sentinel))) + +(ert-deftest test-seq-contains () (with-test-sequences (seq '(3 4 5 6)) - (should (seq-contains-p seq 3)) - (should-not (seq-contains-p seq 7))) + (should (seq-contains seq 3)) + (should-not (seq-contains seq 7))) (with-test-sequences (seq '()) - (should-not (seq-contains-p seq 3)) - (should-not (seq-contains-p seq nil)))) + (should-not (seq-contains seq 3)) + (should-not (seq-contains seq nil)))) (ert-deftest test-seq-every-p () (with-test-sequences (seq '(43 54 22 1)) @@ -276,5 +297,58 @@ Evaluate BODY for each created sequence. (v2 [2 4 6])) (should (seq-empty-p (seq-difference v1 v2))))) +(ert-deftest test-seq-let () + (with-test-sequences (seq '(1 2 3 4)) + (seq-let (a b c d e) seq + (should (= a 1)) + (should (= b 2)) + (should (= c 3)) + (should (= d 4)) + (should (null e))) + (seq-let (a b &rest others) seq + (should (= a 1)) + (should (= b 2)) + (should (same-contents-p others (seq-drop seq 2))))) + (let ((seq '(1 (2 (3 (4)))))) + (seq-let (_ (_ (_ (a)))) seq + (should (= a 4)))) + (let (seq) + (seq-let (a b c) seq + (should (null a)) + (should (null b)) + (should (null c))))) + +(ert-deftest test-seq-min-max () + (with-test-sequences (seq '(4 5 3 2 0 4)) + (should (= (seq-min seq) 0)) + (should (= (seq-max seq) 5)))) + +(ert-deftest test-seq-position () + (with-test-sequences (seq '(2 4 6)) + (should (null (seq-position seq 1))) + (should (= (seq-position seq 4) 1))) + (let ((seq '(a b c))) + (should (null (seq-position seq 'd #'eq))) + (should (= (seq-position seq 'a #'eq) 0)) + (should (null (seq-position seq (make-symbol "a") #'eq))))) + +(ert-deftest test-seq-mapn () + (should-error (seq-mapn #'identity)) + (with-test-sequences (seq '(1 2 3 4 5 6 7)) + (should (equal (append seq nil) + (seq-mapn #'identity seq))) + (should (equal (seq-mapn #'1+ seq) + (seq-map #'1+ seq))) + + (with-test-sequences (seq-2 '(10 20 30 40 50)) + (should (equal (seq-mapn #'+ seq seq-2) + '(11 22 33 44 55))) + (should (equal (seq-mapn #'+ seq seq-2 nil) nil))))) + +(ert-deftest test-seq-sort-by () + (let ((seq ["x" "xx" "xxx"])) + (should (equal (seq-sort-by #'seq-length #'> seq) + ["xxx" "xx" "x"])))) + (provide 'seq-tests) ;;; seq-tests.el ends here