aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJoakim Verona2015-01-18 10:53:38 +0100
committerJoakim Verona2015-01-18 10:53:38 +0100
commit54efd2ab176dd6cc33bb1e86a9c37908c26d0a46 (patch)
treeae7dfc525e25275235b1d6de84cf067a751742e4 /test
parent576960211cb54bc77dc6969591420bca89c59456 (diff)
parent253d44bd27b7d90b614b6b968a3b125eeb0a48f2 (diff)
downloademacs-54efd2ab176dd6cc33bb1e86a9c37908c26d0a46.tar.gz
emacs-54efd2ab176dd6cc33bb1e86a9c37908c26d0a46.zip
merge master
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog31
-rw-r--r--test/automated/cl-generic-tests.el26
-rw-r--r--test/automated/cl-lib-tests.el3
-rw-r--r--test/automated/eieio-test-methodinvoke.el53
-rw-r--r--test/automated/eieio-tests.el52
-rw-r--r--test/automated/seq-tests.el7
6 files changed, 125 insertions, 47 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
index 8ed02ee341b..15baf866f37 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,34 @@
12015-01-18 Leo Liu <sdl.web@gmail.com>
2
3 * automated/seq-tests.el (test-seq-subseq): Add more tests.
4 (Bug#19434)
5
62015-01-17 Stefan Monnier <monnier@iro.umontreal.ca>
7
8 * automated/eieio-tests.el
9 (eieio-test-37-obsolete-name-in-constructor): New test.
10
112015-01-17 Stefan Monnier <monnier@iro.umontreal.ca>
12
13 * automated/eieio-tests.el (eieio-test-25-slot-tests)
14 (eieio-test-26-default-inheritance, eieio-test-28-slot-protection)
15 (eieio-test-30-slot-attribute-override)
16 (eieio-test-31-slot-attribute-override-class-allocation): Don't check
17 that we enforce :protection since we don't any more.
18
19 * automated/eieio-test-methodinvoke.el (eieio-test-method-store):
20 Use an explicit arg instead of eieio--scoped-class. Update all callers.
21
222015-01-17 Stefan Monnier <monnier@iro.umontreal.ca>
23
24 * automated/eieio-test-methodinvoke.el (eieio-test-cl-generic-1):
25 Reset eieio-test--1.
26
27 * automated/cl-generic-tests.el (cl-generic-test-8-after/before):
28 Rename from cl-generic-test-7-after/before.
29 (cl--generic-test-advice): New function.
30 (cl-generic-test-9-advice): New test.
31
12015-01-16 Jorgen Schaefer <contact@jorgenschaefer.de> 322015-01-16 Jorgen Schaefer <contact@jorgenschaefer.de>
2 33
3 * automated/package-test.el (package-test-install-prioritized): 34 * automated/package-test.el (package-test-install-prioritized):
diff --git a/test/automated/cl-generic-tests.el b/test/automated/cl-generic-tests.el
index 17bce6a3157..46397fb7f51 100644
--- a/test/automated/cl-generic-tests.el
+++ b/test/automated/cl-generic-tests.el
@@ -129,5 +129,31 @@
129 (cons "x&y-int" (cl-call-next-method))) 129 (cons "x&y-int" (cl-call-next-method)))
130 (should (equal (cl--generic-1 1 2) '("x&y-int" "y-int" "x-int" 1 2)))) 130 (should (equal (cl--generic-1 1 2) '("x&y-int" "y-int" "x-int" 1 2))))
131 131
132(ert-deftest cl-generic-test-8-after/before ()
133 (let ((log ()))
134 (cl-defgeneric cl--generic-1 (x y))
135 (cl-defmethod cl--generic-1 ((_x t) y) (cons y log))
136 (cl-defmethod cl--generic-1 ((_x (eql 4)) _y)
137 (cons "quatre" (cl-call-next-method)))
138 (cl-defmethod cl--generic-1 :after (x _y)
139 (push (list :after x) log))
140 (cl-defmethod cl--generic-1 :before (x _y)
141 (push (list :before x) log))
142 (should (equal (cl--generic-1 4 6) '("quatre" 6 (:before 4))))
143 (should (equal log '((:after 4) (:before 4))))))
144
145(defun cl--generic-test-advice (&rest args) (cons "advice" (apply args)))
146
147(ert-deftest cl-generic-test-9-advice ()
148 (cl-defgeneric cl--generic-1 (x y) "My doc.")
149 (cl-defmethod cl--generic-1 (x y) (list x y))
150 (advice-add 'cl--generic-1 :around #'cl--generic-test-advice)
151 (should (equal (cl--generic-1 4 5) '("advice" 4 5)))
152 (cl-defmethod cl--generic-1 ((_x integer) _y)
153 (cons "integer" (cl-call-next-method)))
154 (should (equal (cl--generic-1 4 5) '("advice" "integer" 4 5)))
155 (advice-remove 'cl--generic-1 #'cl--generic-test-advice)
156 (should (equal (cl--generic-1 4 5) '("integer" 4 5))))
157
132(provide 'cl-generic-tests) 158(provide 'cl-generic-tests)
133;;; cl-generic-tests.el ends here 159;;; cl-generic-tests.el ends here
diff --git a/test/automated/cl-lib-tests.el b/test/automated/cl-lib-tests.el
index bbfb8d1f1da..c83391b1cc5 100644
--- a/test/automated/cl-lib-tests.el
+++ b/test/automated/cl-lib-tests.el
@@ -245,4 +245,7 @@
245(ert-deftest cl-loop-destructuring-with () 245(ert-deftest cl-loop-destructuring-with ()
246 (should (equal (cl-loop with (a b c) = '(1 2 3) return (+ a b c)) 6))) 246 (should (equal (cl-loop with (a b c) = '(1 2 3) return (+ a b c)) 6)))
247 247
248(ert-deftest cl-flet-test ()
249 (should (equal (cl-flet ((f1 (x) x)) (let ((x #'f1)) (funcall x 5))) 5)))
250
248;;; cl-lib.el ends here 251;;; cl-lib.el ends here
diff --git a/test/automated/eieio-test-methodinvoke.el b/test/automated/eieio-test-methodinvoke.el
index 6362fc5a8d9..b6d60b85815 100644
--- a/test/automated/eieio-test-methodinvoke.el
+++ b/test/automated/eieio-test-methodinvoke.el
@@ -58,11 +58,9 @@
58(defvar eieio-test-method-order-list nil 58(defvar eieio-test-method-order-list nil
59 "List of symbols stored during method invocation.") 59 "List of symbols stored during method invocation.")
60 60
61(defun eieio-test-method-store (keysym) 61(defun eieio-test-method-store (&rest args)
62 "Store current invocation class symbol in the invocation order list." 62 "Store current invocation class symbol in the invocation order list."
63 ;; FIXME: Don't depend on `eieio--scoped-class'! 63 (push args eieio-test-method-order-list))
64 (let* ((c (list keysym (eieio--class-symbol (eieio--scoped-class)))))
65 (push c eieio-test-method-order-list)))
66 64
67(defun eieio-test-match (rightanswer) 65(defun eieio-test-match (rightanswer)
68 "Do a test match." 66 "Do a test match."
@@ -86,36 +84,36 @@
86(defclass eitest-B (eitest-B-base1 eitest-B-base2) ()) 84(defclass eitest-B (eitest-B-base1 eitest-B-base2) ())
87 85
88(defmethod eitest-F :BEFORE ((p eitest-B-base1)) 86(defmethod eitest-F :BEFORE ((p eitest-B-base1))
89 (eieio-test-method-store :BEFORE)) 87 (eieio-test-method-store :BEFORE 'eitest-B-base1))
90 88
91(defmethod eitest-F :BEFORE ((p eitest-B-base2)) 89(defmethod eitest-F :BEFORE ((p eitest-B-base2))
92 (eieio-test-method-store :BEFORE)) 90 (eieio-test-method-store :BEFORE 'eitest-B-base2))
93 91
94(defmethod eitest-F :BEFORE ((p eitest-B)) 92(defmethod eitest-F :BEFORE ((p eitest-B))
95 (eieio-test-method-store :BEFORE)) 93 (eieio-test-method-store :BEFORE 'eitest-B))
96 94
97(defmethod eitest-F ((p eitest-B)) 95(defmethod eitest-F ((p eitest-B))
98 (eieio-test-method-store :PRIMARY) 96 (eieio-test-method-store :PRIMARY 'eitest-B)
99 (call-next-method)) 97 (call-next-method))
100 98
101(defmethod eitest-F ((p eitest-B-base1)) 99(defmethod eitest-F ((p eitest-B-base1))
102 (eieio-test-method-store :PRIMARY) 100 (eieio-test-method-store :PRIMARY 'eitest-B-base1)
103 (call-next-method)) 101 (call-next-method))
104 102
105(defmethod eitest-F ((p eitest-B-base2)) 103(defmethod eitest-F ((p eitest-B-base2))
106 (eieio-test-method-store :PRIMARY) 104 (eieio-test-method-store :PRIMARY 'eitest-B-base2)
107 (when (next-method-p) 105 (when (next-method-p)
108 (call-next-method)) 106 (call-next-method))
109 ) 107 )
110 108
111(defmethod eitest-F :AFTER ((p eitest-B-base1)) 109(defmethod eitest-F :AFTER ((p eitest-B-base1))
112 (eieio-test-method-store :AFTER)) 110 (eieio-test-method-store :AFTER 'eitest-B-base1))
113 111
114(defmethod eitest-F :AFTER ((p eitest-B-base2)) 112(defmethod eitest-F :AFTER ((p eitest-B-base2))
115 (eieio-test-method-store :AFTER)) 113 (eieio-test-method-store :AFTER 'eitest-B-base2))
116 114
117(defmethod eitest-F :AFTER ((p eitest-B)) 115(defmethod eitest-F :AFTER ((p eitest-B))
118 (eieio-test-method-store :AFTER)) 116 (eieio-test-method-store :AFTER 'eitest-B))
119 117
120(ert-deftest eieio-test-method-order-list-3 () 118(ert-deftest eieio-test-method-order-list-3 ()
121 (let ((eieio-test-method-order-list nil) 119 (let ((eieio-test-method-order-list nil)
@@ -150,15 +148,15 @@
150;;; Return value from :PRIMARY 148;;; Return value from :PRIMARY
151;; 149;;
152(defmethod eitest-I :BEFORE ((a eitest-A)) 150(defmethod eitest-I :BEFORE ((a eitest-A))
153 (eieio-test-method-store :BEFORE) 151 (eieio-test-method-store :BEFORE 'eitest-A)
154 ":before") 152 ":before")
155 153
156(defmethod eitest-I :PRIMARY ((a eitest-A)) 154(defmethod eitest-I :PRIMARY ((a eitest-A))
157 (eieio-test-method-store :PRIMARY) 155 (eieio-test-method-store :PRIMARY 'eitest-A)
158 ":primary") 156 ":primary")
159 157
160(defmethod eitest-I :AFTER ((a eitest-A)) 158(defmethod eitest-I :AFTER ((a eitest-A))
161 (eieio-test-method-store :AFTER) 159 (eieio-test-method-store :AFTER 'eitest-A)
162 ":after") 160 ":after")
163 161
164(ert-deftest eieio-test-method-order-list-5 () 162(ert-deftest eieio-test-method-order-list-5 ()
@@ -177,17 +175,17 @@
177 175
178;; Just use the obsolete name once, to make sure it also works. 176;; Just use the obsolete name once, to make sure it also works.
179(defmethod constructor :STATIC ((p C-base1) &rest args) 177(defmethod constructor :STATIC ((p C-base1) &rest args)
180 (eieio-test-method-store :STATIC) 178 (eieio-test-method-store :STATIC 'C-base1)
181 (if (next-method-p) (call-next-method)) 179 (if (next-method-p) (call-next-method))
182 ) 180 )
183 181
184(defmethod eieio-constructor :STATIC ((p C-base2) &rest args) 182(defmethod eieio-constructor :STATIC ((p C-base2) &rest args)
185 (eieio-test-method-store :STATIC) 183 (eieio-test-method-store :STATIC 'C-base2)
186 (if (next-method-p) (call-next-method)) 184 (if (next-method-p) (call-next-method))
187 ) 185 )
188 186
189(defmethod eieio-constructor :STATIC ((p C) &rest args) 187(defmethod eieio-constructor :STATIC ((p C) &rest args)
190 (eieio-test-method-store :STATIC) 188 (eieio-test-method-store :STATIC 'C)
191 (call-next-method) 189 (call-next-method)
192 ) 190 )
193 191
@@ -214,24 +212,24 @@
214 212
215(defmethod eitest-F ((p D)) 213(defmethod eitest-F ((p D))
216 "D" 214 "D"
217 (eieio-test-method-store :PRIMARY) 215 (eieio-test-method-store :PRIMARY 'D)
218 (call-next-method)) 216 (call-next-method))
219 217
220(defmethod eitest-F ((p D-base0)) 218(defmethod eitest-F ((p D-base0))
221 "D-base0" 219 "D-base0"
222 (eieio-test-method-store :PRIMARY) 220 (eieio-test-method-store :PRIMARY 'D-base0)
223 ;; This should have no next 221 ;; This should have no next
224 ;; (when (next-method-p) (call-next-method)) 222 ;; (when (next-method-p) (call-next-method))
225 ) 223 )
226 224
227(defmethod eitest-F ((p D-base1)) 225(defmethod eitest-F ((p D-base1))
228 "D-base1" 226 "D-base1"
229 (eieio-test-method-store :PRIMARY) 227 (eieio-test-method-store :PRIMARY 'D-base1)
230 (call-next-method)) 228 (call-next-method))
231 229
232(defmethod eitest-F ((p D-base2)) 230(defmethod eitest-F ((p D-base2))
233 "D-base2" 231 "D-base2"
234 (eieio-test-method-store :PRIMARY) 232 (eieio-test-method-store :PRIMARY 'D-base2)
235 (when (next-method-p) 233 (when (next-method-p)
236 (call-next-method)) 234 (call-next-method))
237 ) 235 )
@@ -256,21 +254,21 @@
256(defclass E (E-base1 E-base2) () :method-invocation-order :breadth-first) 254(defclass E (E-base1 E-base2) () :method-invocation-order :breadth-first)
257 255
258(defmethod eitest-F ((p E)) 256(defmethod eitest-F ((p E))
259 (eieio-test-method-store :PRIMARY) 257 (eieio-test-method-store :PRIMARY 'E)
260 (call-next-method)) 258 (call-next-method))
261 259
262(defmethod eitest-F ((p E-base0)) 260(defmethod eitest-F ((p E-base0))
263 (eieio-test-method-store :PRIMARY) 261 (eieio-test-method-store :PRIMARY 'E-base0)
264 ;; This should have no next 262 ;; This should have no next
265 ;; (when (next-method-p) (call-next-method)) 263 ;; (when (next-method-p) (call-next-method))
266 ) 264 )
267 265
268(defmethod eitest-F ((p E-base1)) 266(defmethod eitest-F ((p E-base1))
269 (eieio-test-method-store :PRIMARY) 267 (eieio-test-method-store :PRIMARY 'E-base1)
270 (call-next-method)) 268 (call-next-method))
271 269
272(defmethod eitest-F ((p E-base2)) 270(defmethod eitest-F ((p E-base2))
273 (eieio-test-method-store :PRIMARY) 271 (eieio-test-method-store :PRIMARY 'E-base2)
274 (when (next-method-p) 272 (when (next-method-p)
275 (call-next-method)) 273 (call-next-method))
276 ) 274 )
@@ -384,6 +382,7 @@
384(cl-defgeneric eieio-test--1 (x y)) 382(cl-defgeneric eieio-test--1 (x y))
385 383
386(ert-deftest eieio-test-cl-generic-1 () 384(ert-deftest eieio-test-cl-generic-1 ()
385 (cl-defgeneric eieio-test--1 (x y))
387 (cl-defmethod eieio-test--1 (x y) (list x y)) 386 (cl-defmethod eieio-test--1 (x y) (list x y))
388 (cl-defmethod eieio-test--1 ((_x CNM-0) y) 387 (cl-defmethod eieio-test--1 ((_x CNM-0) y)
389 (cons "CNM-0" (cl-call-next-method 7 y))) 388 (cons "CNM-0" (cl-call-next-method 7 y)))
diff --git a/test/automated/eieio-tests.el b/test/automated/eieio-tests.el
index 0b1ff1fd93b..e0120b4b5b8 100644
--- a/test/automated/eieio-tests.el
+++ b/test/automated/eieio-tests.el
@@ -563,7 +563,7 @@ METHOD is the method that was attempting to be called."
563 (should (eq (oref eitest-t1 slot-1) 'moose)) 563 (should (eq (oref eitest-t1 slot-1) 'moose))
564 (should (eq (oref eitest-t1 :moose) 'moose)) 564 (should (eq (oref eitest-t1 :moose) 'moose))
565 ;; Don't pass reference of private slot 565 ;; Don't pass reference of private slot
566 (should-error (oref eitest-t1 slot-2) :type 'invalid-slot-name) 566 ;;PRIVATE (should-error (oref eitest-t1 slot-2) :type 'invalid-slot-name)
567 ;; Check private slot accessor 567 ;; Check private slot accessor
568 (should (string= (get-slot-2 eitest-t1) "penguin")) 568 (should (string= (get-slot-2 eitest-t1) "penguin"))
569 ;; Pass string instead of symbol 569 ;; Pass string instead of symbol
@@ -583,7 +583,7 @@ METHOD is the method that was attempting to be called."
583 (should (eq (oref eitest-t2 slot-1) 'moose)) 583 (should (eq (oref eitest-t2 slot-1) 'moose))
584 (should (eq (oref eitest-t2 :moose) 'moose)) 584 (should (eq (oref eitest-t2 :moose) 'moose))
585 (should (string= (get-slot-2 eitest-t2) "linux")) 585 (should (string= (get-slot-2 eitest-t2) "linux"))
586 (should-error (oref eitest-t2 slot-2) :type 'invalid-slot-name) 586 ;;PRIVATE (should-error (oref eitest-t2 slot-2) :type 'invalid-slot-name)
587 (should (string= (get-slot-2 eitest-t2) "linux")) 587 (should (string= (get-slot-2 eitest-t2) "linux"))
588 (should-error (class-subc :moose "not a symbol") :type 'invalid-slot-type)) 588 (should-error (class-subc :moose "not a symbol") :type 'invalid-slot-type))
589 589
@@ -654,20 +654,23 @@ Do not override for `prot-2'."
654 ;; Access public slots 654 ;; Access public slots
655 (oref eitest-p1 slot-1) 655 (oref eitest-p1 slot-1)
656 (oref eitest-p2 slot-1) 656 (oref eitest-p2 slot-1)
657 ;; Accessing protected slot out of context must fail 657 ;; Accessing protected slot out of context used to fail, but we dropped this
658 (should-error (oref eitest-p1 slot-2) :type 'invalid-slot-name) 658 ;; feature, since it was underused and noone noticed that the check was
659 ;; incorrect (much too loose).
660 ;;PROTECTED (should-error (oref eitest-p1 slot-2) :type 'invalid-slot-name)
659 ;; Access protected slot in method 661 ;; Access protected slot in method
660 (prot1-slot-2 eitest-p1) 662 (prot1-slot-2 eitest-p1)
661 ;; Protected slot in subclass method 663 ;; Protected slot in subclass method
662 (prot1-slot-2 eitest-p2) 664 (prot1-slot-2 eitest-p2)
663 ;; Protected slot from parent class method 665 ;; Protected slot from parent class method
664 (prot0-slot-2 eitest-p1) 666 (prot0-slot-2 eitest-p1)
665 ;; Accessing private slot out of context must fail 667 ;; Accessing private slot out of context used to fail, but we dropped this
666 (should-error (oref eitest-p1 slot-3) :type 'invalid-slot-name) 668 ;; feature, since it was not used.
669 ;;PRIVATE (should-error (oref eitest-p1 slot-3) :type 'invalid-slot-name)
667 ;; Access private slot in method 670 ;; Access private slot in method
668 (prot1-slot-3 eitest-p1) 671 (prot1-slot-3 eitest-p1)
669 ;; Access private slot in subclass method must fail 672 ;; Access private slot in subclass method must fail
670 (should-error (prot1-slot-3 eitest-p2) :type 'invalid-slot-name) 673 ;;PRIVATE (should-error (prot1-slot-3 eitest-p2) :type 'invalid-slot-name)
671 ;; Access private slot by same class 674 ;; Access private slot by same class
672 (prot1-slot-3-only eitest-p1) 675 (prot1-slot-3-only eitest-p1)
673 ;; Access private slot by subclass in sameclass method 676 ;; Access private slot by subclass in sameclass method
@@ -729,12 +732,13 @@ Subclasses to override slot attributes.")
729 732
730(ert-deftest eieio-test-30-slot-attribute-override () 733(ert-deftest eieio-test-30-slot-attribute-override ()
731 ;; Subclass should not override :protection slot attribute 734 ;; Subclass should not override :protection slot attribute
732 (should-error 735 ;;PROTECTION is gone.
733 (eval 736 ;;(should-error
734 '(defclass slotattr-fail (slotattr-base) 737 ;; (eval
735 ((protection :protection :public) 738 ;; '(defclass slotattr-fail (slotattr-base)
736 ) 739 ;; ((protection :protection :public)
737 "This class should throw an error."))) 740 ;; )
741 ;; "This class should throw an error.")))
738 742
739 ;; Subclass should not override :type slot attribute 743 ;; Subclass should not override :type slot attribute
740 (should-error 744 (should-error
@@ -782,12 +786,13 @@ Subclasses to override slot attributes.")
782 786
783(ert-deftest eieio-test-31-slot-attribute-override-class-allocation () 787(ert-deftest eieio-test-31-slot-attribute-override-class-allocation ()
784 ;; Same as test-30, but with class allocation 788 ;; Same as test-30, but with class allocation
785 (should-error 789 ;;PROTECTION is gone.
786 (eval 790 ;;(should-error
787 '(defclass slotattr-fail (slotattr-class-base) 791 ;; (eval
788 ((protection :protection :public) 792 ;; '(defclass slotattr-fail (slotattr-class-base)
789 ) 793 ;; ((protection :protection :public)
790 "This class should throw an error."))) 794 ;; )
795 ;; "This class should throw an error.")))
791 (should-error 796 (should-error
792 (eval 797 (eval
793 '(defclass slotattr-fail (slotattr-class-base) 798 '(defclass slotattr-fail (slotattr-class-base)
@@ -887,6 +892,15 @@ Subclasses to override slot attributes.")
887 (should (= (length (eieio-build-class-alist 'opt-test1 nil)) 2)) 892 (should (= (length (eieio-build-class-alist 'opt-test1 nil)) 2))
888 (should (= (length (eieio-build-class-alist 'opt-test1 t)) 1))) 893 (should (= (length (eieio-build-class-alist 'opt-test1 t)) 1)))
889 894
895(defclass eieio--testing ()
896 ())
897
898(defmethod constructor :static ((_x eieio--testing) newname &rest _args)
899 (list newname 2))
900
901(ert-deftest eieio-test-37-obsolete-name-in-constructor ()
902 (should (equal (eieio--testing "toto") '("toto" 2))))
903
890(provide 'eieio-tests) 904(provide 'eieio-tests)
891 905
892;;; eieio-tests.el ends here 906;;; eieio-tests.el ends here
diff --git a/test/automated/seq-tests.el b/test/automated/seq-tests.el
index 9fcda7f7c9d..23989799306 100644
--- a/test/automated/seq-tests.el
+++ b/test/automated/seq-tests.el
@@ -182,7 +182,12 @@ Evaluate BODY for each created sequence.
182 (should (same-contents-p (seq-subseq seq 1 -1) '(3 4)))) 182 (should (same-contents-p (seq-subseq seq 1 -1) '(3 4))))
183 (should (vectorp (seq-subseq [2 3 4 5] 2))) 183 (should (vectorp (seq-subseq [2 3 4 5] 2)))
184 (should (stringp (seq-subseq "foo" 2 3))) 184 (should (stringp (seq-subseq "foo" 2 3)))
185 (should (listp (seq-subseq '(2 3 4 4) 2 3)))) 185 (should (listp (seq-subseq '(2 3 4 4) 2 3)))
186 (should-error (seq-subseq '(1 2 3) 4))
187 (should-not (seq-subseq '(1 2 3) 3))
188 (should (seq-subseq '(1 2 3) -3))
189 (should-error (seq-subseq '(1 2 3) 1 4))
190 (should (seq-subseq '(1 2 3) 1 3)))
186 191
187(ert-deftest test-seq-concatenate () 192(ert-deftest test-seq-concatenate ()
188 (with-test-sequences (seq '(2 4 6)) 193 (with-test-sequences (seq '(2 4 6))