aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Petton2015-04-21 20:53:28 +0200
committerNicolas Petton2015-04-21 20:54:12 +0200
commit89baf163324c6820ca17e91cda9dc8b162a59eab (patch)
tree06c05d13c267c79dfbf0cd1db52e777acd519e27
parentbe3d269d525dc2717f2a757c42344a9bfbdfe4f2 (diff)
downloademacs-89baf163324c6820ca17e91cda9dc8b162a59eab.tar.gz
emacs-89baf163324c6820ca17e91cda9dc8b162a59eab.zip
* test/automated/map-tests.el: Refactoring of test methods.
-rw-r--r--test/automated/map-tests.el284
1 files changed, 135 insertions, 149 deletions
diff --git a/test/automated/map-tests.el b/test/automated/map-tests.el
index ea7b0af3f46..9a0d99e04de 100644
--- a/test/automated/map-tests.el
+++ b/test/automated/map-tests.el
@@ -29,56 +29,56 @@
29(require 'ert) 29(require 'ert)
30(require 'map) 30(require 'map)
31 31
32(defmacro with-maps-do (alist-name vec-name ht-name &rest body) 32(defmacro with-maps-do (var &rest body)
33 (declare (indent 3)) 33 "Successively bind VAR to an alist, vector and hash-table.
34 `(let ((,alist-name '((a . 2) 34Each map is built from the following alist data:
35 (b . 3) 35'((0 . 3) (1 . 4) (2 . 5)).
36 (c . 4))) 36Evaluate BODY for each created map.
37 (,vec-name (make-vector 3 nil)) 37
38 (,ht-name (make-hash-table))) 38\(fn (var map) body)"
39 (aset ,vec-name 0 'a) 39 (declare (indent 1) (debug t))
40 (aset ,vec-name 1 'b) 40 (let ((alist (make-symbol "alist"))
41 (aset ,vec-name 2 'c) 41 (vec (make-symbol "vec"))
42 (puthash 'a 2 ,ht-name) 42 (ht (make-symbol "ht")))
43 (puthash 'b 3 ,ht-name) 43 `(let ((,alist '((0 . 3)
44 (puthash 'c 4 ,ht-name) 44 (1 . 4)
45 (progn 45 (2 . 5)))
46 ,@body))) 46 (,vec (make-vector 3 nil))
47 (,ht (make-hash-table)))
48 (aset ,vec 0 '3)
49 (aset ,vec 1 '4)
50 (aset ,vec 2 '5)
51 (puthash '0 3 ,ht)
52 (puthash '1 4 ,ht)
53 (puthash '2 5 ,ht)
54 (dolist (,var (list ,alist ,vec ,ht))
55 ,@body))))
47 56
48(ert-deftest test-map-elt () 57(ert-deftest test-map-elt ()
49 (with-maps-do alist vec ht 58 (with-maps-do map
50 (assert (= 2 (map-elt alist 'a))) 59 (assert (= 3 (map-elt map 0)))
51 (assert (= 3 (map-elt alist 'b))) 60 (assert (= 4 (map-elt map 1)))
52 (assert (= 4 (map-elt alist 'c))) 61 (assert (= 5 (map-elt map 2)))
53 (assert (null (map-elt alist 'd))) 62 (assert (null (map-elt map 4)))))
54 (assert (= 2 (map-elt ht 'a)))
55 (assert (= 3 (map-elt ht 'b)))
56 (assert (= 4 (map-elt ht 'c)))
57 (assert (null (map-elt ht 'd)))
58 (assert (eq 'a (map-elt vec 0)))
59 (assert (eq 'b (map-elt vec 1)))
60 (assert (eq 'c (map-elt vec 2)))
61 (assert (null (map-elt vec 3)))))
62 63
63(ert-deftest test-map-elt-default () 64(ert-deftest test-map-elt-default ()
64 (with-maps-do alist vec ht 65 (with-maps-do map
65 (assert (= 5 (map-elt alist 'd 5))) 66 (assert (= 5 (map-elt map 7 5)))))
66 (assert (= 5 (map-elt vec 4 5)))
67 (assert (= 5 (map-elt ht 'd 5)))))
68 67
69(ert-deftest test-map-put () 68(ert-deftest test-map-put ()
70 (with-maps-do alist vec ht 69 (with-maps-do map
71 (map-put alist 'd 4) 70 (map-put map 2 'hello)
72 (assert (= (map-elt alist 'd) 4)) 71 (assert (eq (map-elt map 2) 'hello)))
73 (map-put alist 'd 5) 72 (let ((ht (make-hash-table)))
74 (assert (= (map-elt alist 'd) 5)) 73 (map-put ht 2 'a)
75 (map-put ht 'd 4) 74 (assert (eq (map-elt ht 2)
76 (assert (= (map-elt ht 'd) 4)) 75 'a)))
77 (map-put ht 'd 5) 76 (let ((alist '((0 . a) (1 . b) (2 . c))))
78 (assert (= (map-elt ht 'd) 5)) 77 (map-put alist 2 'a)
79 (map-put vec 0 'd) 78 (assert (eq (map-elt alist 2)
80 (assert (eq (map-elt vec 0) 'd)) 79 'a)))
81 (should-error (map-put vec 4 'd)))) 80 (let ((vec [3 4 5]))
81 (should-error (map-put vec 3 6))))
82 82
83(ert-deftest test-map-put-literal () 83(ert-deftest test-map-put-literal ()
84 (assert (= (map-elt (map-put [1 2 3] 1 4) 1) 84 (assert (= (map-elt (map-put [1 2 3] 1 4) 1)
@@ -93,13 +93,9 @@
93 (assert (eq (map-put ht 'a 'hello) ht)))) 93 (assert (eq (map-put ht 'a 'hello) ht))))
94 94
95(ert-deftest test-map-delete () 95(ert-deftest test-map-delete ()
96 (with-maps-do alist vec ht 96 (with-maps-do map
97 (map-delete alist 'a) 97 (map-delete map 1)
98 (assert (null (map-elt alist 'a))) 98 (assert (null (map-elt map 1)))))
99 (map-delete ht 'a)
100 (assert (null (map-elt ht 'a)))
101 (map-delete vec 2)
102 (assert (null (map-elt vec 2)))))
103 99
104(ert-deftest test-map-delete-return-value () 100(ert-deftest test-map-delete-return-value ()
105 (let ((ht (make-hash-table))) 101 (let ((ht (make-hash-table)))
@@ -136,32 +132,24 @@
136 (assert (map-p [1 2 3])) 132 (assert (map-p [1 2 3]))
137 (assert (map-p (make-hash-table))) 133 (assert (map-p (make-hash-table)))
138 (assert (map-p "hello")) 134 (assert (map-p "hello"))
139 (with-maps-do alist vec ht 135 (assert (not (map-p 1)))
140 (assert (map-p alist)) 136 (assert (not (map-p 'hello))))
141 (assert (map-p vec))
142 (assert (map-p ht))
143 (assert (not (map-p 1)))
144 (assert (not (map-p 'hello)))))
145 137
146(ert-deftest test-map-keys () 138(ert-deftest test-map-keys ()
147 (with-maps-do alist vec ht 139 (with-maps-do map
148 (assert (equal (map-keys alist) '(a b c))) 140 (assert (equal (map-keys map) '(0 1 2))))
149 (assert (equal (map-keys vec) '(0 1 2))) 141 (assert (null (map-keys nil)))
150 (assert (equal (map-keys ht) '(a b c))))) 142 (assert (null (map-keys []))))
151 143
152(ert-deftest test-map-values () 144(ert-deftest test-map-values ()
153 (with-maps-do alist vec ht 145 (with-maps-do map
154 (assert (equal (map-values alist) '(2 3 4))) 146 (assert (equal (map-values map) '(3 4 5)))))
155 (assert (equal (map-values vec) '(a b c)))
156 (assert (equal (map-values ht) '(2 3 4)))))
157 147
158(ert-deftest test-map-pairs () 148(ert-deftest test-map-pairs ()
159 (with-maps-do alist vec ht 149 (with-maps-do map
160 (assert (equal (map-pairs alist) alist)) 150 (assert (equal (map-pairs map) '((0 . 3)
161 (assert (equal (map-pairs vec) '((0 . a) 151 (1 . 4)
162 (1 . b) 152 (2 . 5))))))
163 (2 . c))))
164 (assert (equal (map-pairs ht) alist))))
165 153
166(ert-deftest test-map-length () 154(ert-deftest test-map-length ()
167 (let ((ht (make-hash-table))) 155 (let ((ht (make-hash-table)))
@@ -177,19 +165,18 @@
177 (assert (= 4 (map-length ht))))) 165 (assert (= 4 (map-length ht)))))
178 166
179(ert-deftest test-map-copy () 167(ert-deftest test-map-copy ()
180 (with-maps-do alist vec ht 168 (with-maps-do map
181 (dolist (map (list alist vec ht)) 169 (let ((copy (map-copy map)))
182 (let ((copy (map-copy map))) 170 (assert (equal (map-keys map) (map-keys copy)))
183 (assert (equal (map-keys map) (map-keys copy))) 171 (assert (equal (map-values map) (map-values copy)))
184 (assert (equal (map-values map) (map-values copy))) 172 (assert (not (eq map copy))))))
185 (assert (not (eq map copy)))))))
186 173
187(ert-deftest test-map-apply () 174(ert-deftest test-map-apply ()
188 (with-maps-do alist vec ht 175 (with-maps-do map
189 (dolist (map (list alist ht)) 176 (assert (equal (map-apply (lambda (k v) (cons (int-to-string k) v))
190 (assert (equal (map-apply (lambda (k v) (cons (symbol-name k) v)) 177 map)
191 map) 178 '(("0" . 3) ("1" . 4) ("2" . 5)))))
192 '(("a" . 2) ("b" . 3) ("c" . 4))))) 179 (let ((vec [a b c]))
193 (assert (equal (map-apply (lambda (k v) (cons (1+ k) v)) 180 (assert (equal (map-apply (lambda (k v) (cons (1+ k) v))
194 vec) 181 vec)
195 '((1 . a) 182 '((1 . a)
@@ -197,64 +184,62 @@
197 (3 . c)))))) 184 (3 . c))))))
198 185
199(ert-deftest test-map-keys-apply () 186(ert-deftest test-map-keys-apply ()
200 (with-maps-do alist vec ht 187 (with-maps-do map
201 (dolist (map (list alist ht)) 188 (assert (equal (map-keys-apply (lambda (k) (int-to-string k))
202 (assert (equal (map-keys-apply (lambda (k) (symbol-name k)) 189 map)
203 map) 190 '("0" "1" "2"))))
204 '("a" "b" "c")))) 191 (let ((vec [a b c]))
205 (assert (equal (map-keys-apply (lambda (k) (1+ k)) 192 (assert (equal (map-keys-apply (lambda (k) (1+ k))
206 vec) 193 vec)
207 '(1 2 3))))) 194 '(1 2 3)))))
208 195
209(ert-deftest test-map-values-apply () 196(ert-deftest test-map-values-apply ()
210 (with-maps-do alist vec ht 197 (with-maps-do map
211 (dolist (map (list alist ht)) 198 (assert (equal (map-values-apply (lambda (v) (1+ v))
212 (assert (equal (map-values-apply (lambda (v) (1+ v)) 199 map)
213 map) 200 '(4 5 6))))
214 '(3 4 5)))) 201 (let ((vec [a b c]))
215 (assert (equal (map-values-apply (lambda (v) (symbol-name v)) 202 (assert (equal (map-values-apply (lambda (v) (symbol-name v))
216 vec) 203 vec)
217 '("a" "b" "c"))))) 204 '("a" "b" "c")))))
218 205
219(ert-deftest test-map-filter () 206(ert-deftest test-map-filter ()
220 (with-maps-do alist vec ht 207 (with-maps-do map
221 (dolist (map (list alist ht)) 208 (assert (equal (map-keys (map-filter (lambda (k v)
222 (assert (equal (map-keys (map-filter (lambda (k v) 209 (<= 4 v))
223 (<= 3 v)) 210 map))
224 map)) 211 '(1 2)))
225 '(b c)))
226 (assert (null (map-filter (lambda (k v)
227 (eq 'd k))
228 map))))
229 (assert (null (map-filter (lambda (k v) 212 (assert (null (map-filter (lambda (k v)
230 (eq 3 v)) 213 (eq 'd k))
231 [1 2 4 5]))) 214 map))))
232 (assert (equal (map-filter (lambda (k v) 215 (assert (null (map-filter (lambda (k v)
233 (eq 3 k)) 216 (eq 3 v))
234 [1 2 4 5]) 217 [1 2 4 5])))
235 '((3 . 5)))))) 218 (assert (equal (map-filter (lambda (k v)
219 (eq 3 k))
220 [1 2 4 5])
221 '((3 . 5)))))
236 222
237(ert-deftest test-map-remove () 223(ert-deftest test-map-remove ()
238 (with-maps-do alist vec ht 224 (with-maps-do map
239 (dolist (map (list alist ht)) 225 (assert (equal (map-keys (map-remove (lambda (k v)
240 (assert (equal (map-keys (map-remove (lambda (k v) 226 (>= v 4))
241 (<= 3 v)) 227 map))
242 map)) 228 '(0)))
243 '(a))) 229 (assert (equal (map-keys (map-remove (lambda (k v)
244 (assert (equal (map-keys (map-remove (lambda (k v) 230 (eq 'd k))
245 (eq 'd k)) 231 map))
246 map)) 232 (map-keys map))))
247 (map-keys map)))) 233 (assert (equal (map-remove (lambda (k v)
248 (assert (equal (map-remove (lambda (k v) 234 (eq 3 v))
249 (eq 3 v)) 235 [1 2 4 5])
250 [1 2 4 5]) 236 '((0 . 1)
251 '((0 . 1) 237 (1 . 2)
252 (1 . 2) 238 (2 . 4)
253 (2 . 4) 239 (3 . 5))))
254 (3 . 5)))) 240 (assert (null (map-remove (lambda (k v)
255 (assert (null (map-remove (lambda (k v) 241 (>= k 0))
256 (>= k 0)) 242 [1 2 4 5]))))
257 [1 2 4 5])))))
258 243
259(ert-deftest test-map-empty-p () 244(ert-deftest test-map-empty-p ()
260 (assert (map-empty-p nil)) 245 (assert (map-empty-p nil))
@@ -274,15 +259,15 @@
274 (assert (not (map-contains-key-p [a b c] 3)))) 259 (assert (not (map-contains-key-p [a b c] 3))))
275 260
276(ert-deftest test-map-some-p () 261(ert-deftest test-map-some-p ()
277 (with-maps-do alist vec ht 262 (with-maps-do map
278 (dolist (map (list alist ht)) 263 (assert (equal (map-some-p (lambda (k v)
279 (assert (equal (map-some-p (lambda (k v) 264 (eq 1 k))
280 (eq 'a k)) 265 map)
281 map) 266 (cons 1 4)))
282 (cons 'a 2))) 267 (assert (not (map-some-p (lambda (k v)
283 (assert (not (map-some-p (lambda (k v) 268 (eq 'd k))
284 (eq 'd k)) 269 map))))
285 map)))) 270 (let ((vec [a b c]))
286 (assert (equal (map-some-p (lambda (k v) 271 (assert (equal (map-some-p (lambda (k v)
287 (> k 1)) 272 (> k 1))
288 vec) 273 vec)
@@ -292,24 +277,25 @@
292 vec))))) 277 vec)))))
293 278
294(ert-deftest test-map-every-p () 279(ert-deftest test-map-every-p ()
295 (with-maps-do alist vec ht 280 (with-maps-do map
296 (dolist (map (list alist ht vec)) 281 (assert (map-every-p (lambda (k v)
297 (assert (map-every-p (lambda (k v) 282 k)
298 k) 283 map))
299 map)) 284 (assert (not (map-every-p (lambda (k v)
300 (assert (not (map-every-p (lambda (k v) 285 nil)
301 nil) 286 map))))
302 map)))) 287 (let ((vec [a b c]))
303 (assert (map-every-p (lambda (k v) 288 (assert (map-every-p (lambda (k v)
304 (>= k 0)) 289 (>= k 0))
305 vec)) 290 vec))
306 (assert (not (map-every-p (lambda (k v) 291 (assert (not (map-every-p (lambda (k v)
307 (> k 3)) 292 (> k 3))
308 vec))))) 293 vec)))))
309 294
310(ert-deftest test-map-into () 295(ert-deftest test-map-into ()
311 (with-maps-do alist vec ht 296 (let* ((alist '((a . 1) (b . 2)))
312 (assert (hash-table-p (map-into alist 'hash-table))) 297 (ht (map-into alist 'hash-table)))
298 (assert (hash-table-p ht))
313 (assert (equal (map-into (map-into alist 'hash-table) 'list) 299 (assert (equal (map-into (map-into alist 'hash-table) 'list)
314 alist)) 300 alist))
315 (assert (listp (map-into ht 'list))) 301 (assert (listp (map-into ht 'list)))