diff options
| author | Nicolas Petton | 2015-04-21 20:53:28 +0200 |
|---|---|---|
| committer | Nicolas Petton | 2015-04-21 20:54:12 +0200 |
| commit | 89baf163324c6820ca17e91cda9dc8b162a59eab (patch) | |
| tree | 06c05d13c267c79dfbf0cd1db52e777acd519e27 | |
| parent | be3d269d525dc2717f2a757c42344a9bfbdfe4f2 (diff) | |
| download | emacs-89baf163324c6820ca17e91cda9dc8b162a59eab.tar.gz emacs-89baf163324c6820ca17e91cda9dc8b162a59eab.zip | |
* test/automated/map-tests.el: Refactoring of test methods.
| -rw-r--r-- | test/automated/map-tests.el | 284 |
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) | 34 | Each map is built from the following alist data: |
| 35 | (b . 3) | 35 | '((0 . 3) (1 . 4) (2 . 5)). |
| 36 | (c . 4))) | 36 | Evaluate 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))) |