aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorNicolas Petton2015-07-09 19:43:41 +0200
committerNicolas Petton2015-07-09 19:49:47 +0200
commit5509e2f93e790e6bf484160753493e42af04530b (patch)
treefe60e06add283765c174fa9fc7fd3ee2fb0659ac /test
parent2a1591f4d431777c7956146aff6d9d1602420d9e (diff)
downloademacs-5509e2f93e790e6bf484160753493e42af04530b.tar.gz
emacs-5509e2f93e790e6bf484160753493e42af04530b.zip
Add support for gv.el in map.el
* lisp/emacs-lisp/map.el (map-elt, map-delete): Declare a gv-expander. * lisp/emacs-lisp/map.el (map-put): Refactor using `setf' and `map-elt'. * test/automated/map-tests.el: Update tests to work with the new implementations of map-elt and map-put.
Diffstat (limited to 'test')
-rw-r--r--test/automated/map-tests.el103
1 files changed, 48 insertions, 55 deletions
diff --git a/test/automated/map-tests.el b/test/automated/map-tests.el
index abda03d9d04..2bce643fe3a 100644
--- a/test/automated/map-tests.el
+++ b/test/automated/map-tests.el
@@ -1,4 +1,4 @@
1;;; map-tests.el --- Tests for map.el 1;;; map-tests.el --- Tests for map.el -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2015 Free Software Foundation, Inc. 3;; Copyright (C) 2015 Free Software Foundation, Inc.
4 4
@@ -40,17 +40,14 @@ Evaluate BODY for each created map.
40 (let ((alist (make-symbol "alist")) 40 (let ((alist (make-symbol "alist"))
41 (vec (make-symbol "vec")) 41 (vec (make-symbol "vec"))
42 (ht (make-symbol "ht"))) 42 (ht (make-symbol "ht")))
43 `(let ((,alist '((0 . 3) 43 `(let ((,alist (list (cons 0 3)
44 (1 . 4) 44 (cons 1 4)
45 (2 . 5))) 45 (cons 2 5)))
46 (,vec (make-vector 3 nil)) 46 (,vec (vector 3 4 5))
47 (,ht (make-hash-table))) 47 (,ht (make-hash-table)))
48 (aset ,vec 0 '3) 48 (puthash 0 3 ,ht)
49 (aset ,vec 1 '4) 49 (puthash 1 4 ,ht)
50 (aset ,vec 2 '5) 50 (puthash 2 5 ,ht)
51 (puthash '0 3 ,ht)
52 (puthash '1 4 ,ht)
53 (puthash '2 5 ,ht)
54 (dolist (,var (list ,alist ,vec ,ht)) 51 (dolist (,var (list ,alist ,vec ,ht))
55 ,@body)))) 52 ,@body))))
56 53
@@ -74,26 +71,21 @@ Evaluate BODY for each created map.
74 71
75(ert-deftest test-map-put () 72(ert-deftest test-map-put ()
76 (with-maps-do map 73 (with-maps-do map
74 (setf (map-elt map 2) 'hello)
75 (should (eq (map-elt map 2) 'hello)))
76 (with-maps-do map
77 (map-put map 2 'hello) 77 (map-put map 2 'hello)
78 (should (eq (map-elt map 2) 'hello))) 78 (should (eq (map-elt map 2) 'hello)))
79 (let ((ht (make-hash-table))) 79 (let ((ht (make-hash-table)))
80 (map-put ht 2 'a) 80 (setf (map-elt ht 2) 'a)
81 (should (eq (map-elt ht 2) 81 (should (eq (map-elt ht 2)
82 'a))) 82 'a)))
83 (let ((alist '((0 . a) (1 . b) (2 . c)))) 83 (let ((alist '((0 . a) (1 . b) (2 . c))))
84 (map-put alist 2 'a) 84 (setf (map-elt alist 2) 'a)
85 (should (eq (map-elt alist 2) 85 (should (eq (map-elt alist 2)
86 'a))) 86 'a)))
87 (let ((vec [3 4 5])) 87 (let ((vec [3 4 5]))
88 (should-error (map-put vec 3 6)))) 88 (should-error (setf (map-elt vec 3) 6))))
89
90(ert-deftest test-map-put-literal ()
91 (should (= (map-elt (map-put [1 2 3] 1 4) 1)
92 4))
93 (should (= (map-elt (map-put (make-hash-table) 'a 2) 'a)
94 2))
95 (should-error (map-put '((a . 1)) 'b 2))
96 (should-error (map-put '() 'a 1)))
97 89
98(ert-deftest test-map-put-return-value () 90(ert-deftest test-map-put-return-value ()
99 (let ((ht (make-hash-table))) 91 (let ((ht (make-hash-table)))
@@ -111,22 +103,22 @@ Evaluate BODY for each created map.
111 (let ((ht (make-hash-table))) 103 (let ((ht (make-hash-table)))
112 (should (eq (map-delete ht 'a) ht)))) 104 (should (eq (map-delete ht 'a) ht))))
113 105
114(ert-deftest test-map-nested-elt () 106;; (ert-deftest test-map-nested-elt ()
115 (let ((vec [a b [c d [e f]]])) 107;; (let ((vec [a b [c d [e f]]]))
116 (should (eq (map-nested-elt vec '(2 2 0)) 'e))) 108;; (should (eq (map-nested-elt vec '(2 2 0)) 'e)))
117 (let ((alist '((a . 1) 109;; (let ((alist '((a . 1)
118 (b . ((c . 2) 110;; (b . ((c . 2)
119 (d . 3) 111;; (d . 3)
120 (e . ((f . 4) 112;; (e . ((f . 4)
121 (g . 5)))))))) 113;; (g . 5))))))))
122 (should (eq (map-nested-elt alist '(b e f)) 114;; (should (eq (map-nested-elt alist '(b e f))
123 4))) 115;; 4)))
124 (let ((ht (make-hash-table))) 116;; (let ((ht (make-hash-table)))
125 (map-put ht 'a 1) 117;; (setf (map-elt ht 'a) 1)
126 (map-put ht 'b (make-hash-table)) 118;; (setf (map-elt ht 'b) (make-hash-table))
127 (map-put (map-elt ht 'b) 'c 2) 119;; (setf (map-elt (map-elt ht 'b) 'c) 2)
128 (should (eq (map-nested-elt ht '(b c)) 120;; (should (eq (map-nested-elt ht '(b c))
129 2)))) 121;; 2))))
130 122
131(ert-deftest test-map-nested-elt-default () 123(ert-deftest test-map-nested-elt-default ()
132 (let ((vec [a b [c d]])) 124 (let ((vec [a b [c d]]))
@@ -215,39 +207,39 @@ Evaluate BODY for each created map.
215 207
216(ert-deftest test-map-filter () 208(ert-deftest test-map-filter ()
217 (with-maps-do map 209 (with-maps-do map
218 (should (equal (map-keys (map-filter (lambda (k v) 210 (should (equal (map-keys (map-filter (lambda (_k v)
219 (<= 4 v)) 211 (<= 4 v))
220 map)) 212 map))
221 '(1 2))) 213 '(1 2)))
222 (should (null (map-filter (lambda (k v) 214 (should (null (map-filter (lambda (k _v)
223 (eq 'd k)) 215 (eq 'd k))
224 map)))) 216 map))))
225 (should (null (map-filter (lambda (k v) 217 (should (null (map-filter (lambda (_k v)
226 (eq 3 v)) 218 (eq 3 v))
227 [1 2 4 5]))) 219 [1 2 4 5])))
228 (should (equal (map-filter (lambda (k v) 220 (should (equal (map-filter (lambda (k _v)
229 (eq 3 k)) 221 (eq 3 k))
230 [1 2 4 5]) 222 [1 2 4 5])
231 '((3 . 5))))) 223 '((3 . 5)))))
232 224
233(ert-deftest test-map-remove () 225(ert-deftest test-map-remove ()
234 (with-maps-do map 226 (with-maps-do map
235 (should (equal (map-keys (map-remove (lambda (k v) 227 (should (equal (map-keys (map-remove (lambda (_k v)
236 (>= v 4)) 228 (>= v 4))
237 map)) 229 map))
238 '(0))) 230 '(0)))
239 (should (equal (map-keys (map-remove (lambda (k v) 231 (should (equal (map-keys (map-remove (lambda (k _v)
240 (eq 'd k)) 232 (eq 'd k))
241 map)) 233 map))
242 (map-keys map)))) 234 (map-keys map))))
243 (should (equal (map-remove (lambda (k v) 235 (should (equal (map-remove (lambda (_k v)
244 (eq 3 v)) 236 (eq 3 v))
245 [1 2 4 5]) 237 [1 2 4 5])
246 '((0 . 1) 238 '((0 . 1)
247 (1 . 2) 239 (1 . 2)
248 (2 . 4) 240 (2 . 4)
249 (3 . 5)))) 241 (3 . 5))))
250 (should (null (map-remove (lambda (k v) 242 (should (null (map-remove (lambda (k _v)
251 (>= k 0)) 243 (>= k 0))
252 [1 2 4 5])))) 244 [1 2 4 5]))))
253 245
@@ -270,35 +262,35 @@ Evaluate BODY for each created map.
270 262
271(ert-deftest test-map-some-p () 263(ert-deftest test-map-some-p ()
272 (with-maps-do map 264 (with-maps-do map
273 (should (equal (map-some-p (lambda (k v) 265 (should (equal (map-some-p (lambda (k _v)
274 (eq 1 k)) 266 (eq 1 k))
275 map) 267 map)
276 (cons 1 4))) 268 (cons 1 4)))
277 (should (not (map-some-p (lambda (k v) 269 (should (not (map-some-p (lambda (k _v)
278 (eq 'd k)) 270 (eq 'd k))
279 map)))) 271 map))))
280 (let ((vec [a b c])) 272 (let ((vec [a b c]))
281 (should (equal (map-some-p (lambda (k v) 273 (should (equal (map-some-p (lambda (k _v)
282 (> k 1)) 274 (> k 1))
283 vec) 275 vec)
284 (cons 2 'c))) 276 (cons 2 'c)))
285 (should (not (map-some-p (lambda (k v) 277 (should (not (map-some-p (lambda (k _v)
286 (> k 3)) 278 (> k 3))
287 vec))))) 279 vec)))))
288 280
289(ert-deftest test-map-every-p () 281(ert-deftest test-map-every-p ()
290 (with-maps-do map 282 (with-maps-do map
291 (should (map-every-p (lambda (k v) 283 (should (map-every-p (lambda (k _v)
292 k) 284 k)
293 map)) 285 map))
294 (should (not (map-every-p (lambda (k v) 286 (should (not (map-every-p (lambda (_k _v)
295 nil) 287 nil)
296 map)))) 288 map))))
297 (let ((vec [a b c])) 289 (let ((vec [a b c]))
298 (should (map-every-p (lambda (k v) 290 (should (map-every-p (lambda (k _v)
299 (>= k 0)) 291 (>= k 0))
300 vec)) 292 vec))
301 (should (not (map-every-p (lambda (k v) 293 (should (not (map-every-p (lambda (k _v)
302 (> k 3)) 294 (> k 3))
303 vec))))) 295 vec)))))
304 296
@@ -324,7 +316,8 @@ Evaluate BODY for each created map.
324 (should (null baz))) 316 (should (null baz)))
325 (map-let (('foo a) 317 (map-let (('foo a)
326 ('bar b) 318 ('bar b)
327 ('baz c)) '((foo . 1) (bar . 2)) 319 ('baz c))
320 '((foo . 1) (bar . 2))
328 (should (= a 1)) 321 (should (= a 1))
329 (should (= b 2)) 322 (should (= b 2))
330 (should (null c)))) 323 (should (null c))))