aboutsummaryrefslogtreecommitdiffstats
path: root/test/src
diff options
context:
space:
mode:
authorNoam Postavsky2015-12-12 23:10:15 -0500
committerNoam Postavsky2016-12-02 20:25:15 -0500
commite7cd98b86fc7cb7d8b187087ffff95f106124dc5 (patch)
treeb3f5fc89734ca6246059a4854d62a39b4d63c48f /test/src
parentd3faef9baedadc9eaec46814ba9bbe5168048328 (diff)
downloademacs-e7cd98b86fc7cb7d8b187087ffff95f106124dc5.tar.gz
emacs-e7cd98b86fc7cb7d8b187087ffff95f106124dc5.zip
Add tests for watchpoints
* test/src/data-tests.el (data-tests-variable-watchers): (data-tests-local-variable-watchers): New tests.
Diffstat (limited to 'test/src')
-rw-r--r--test/src/data-tests.el115
1 files changed, 115 insertions, 0 deletions
diff --git a/test/src/data-tests.el b/test/src/data-tests.el
index 0a292336f35..4c2ea54862c 100644
--- a/test/src/data-tests.el
+++ b/test/src/data-tests.el
@@ -255,3 +255,118 @@ comparing the subr with a much slower lisp implementation."
255 (v2 (test-bool-vector-bv-from-hex-string "0000C")) 255 (v2 (test-bool-vector-bv-from-hex-string "0000C"))
256 (v3 (bool-vector-not v1))) 256 (v3 (bool-vector-not v1)))
257 (should (equal v2 v3)))) 257 (should (equal v2 v3))))
258
259(ert-deftest data-tests-variable-watchers ()
260 (defvar data-tests-var 0)
261 (let* ((watch-data nil)
262 (collect-watch-data
263 (lambda (&rest args) (push args watch-data))))
264 (cl-flet ((should-have-watch-data (data)
265 (should (equal (pop watch-data) data))
266 (should (null watch-data))))
267 (add-variable-watcher 'data-tests-var collect-watch-data)
268 (setq data-tests-var 1)
269 (should-have-watch-data '(data-tests-var 1 set nil))
270 (let ((data-tests-var 2))
271 (should-have-watch-data '(data-tests-var 2 let nil))
272 (setq data-tests-var 3)
273 (should-have-watch-data '(data-tests-var 3 set nil)))
274 (should-have-watch-data '(data-tests-var 1 unlet nil))
275 ;; `setq-default' on non-local variable is same as `setq'.
276 (setq-default data-tests-var 4)
277 (should-have-watch-data '(data-tests-var 4 set nil))
278 (makunbound 'data-tests-var)
279 (should-have-watch-data '(data-tests-var nil makunbound nil))
280 (setq data-tests-var 5)
281 (should-have-watch-data '(data-tests-var 5 set nil))
282 (remove-variable-watcher 'data-tests-var collect-watch-data)
283 (setq data-tests-var 6)
284 (should (null watch-data)))))
285
286(ert-deftest data-tests-varalias-watchers ()
287 (defvar data-tests-var0 0)
288 (defvar data-tests-var1 0)
289 (defvar data-tests-var2 0)
290 (defvar data-tests-var3 0)
291 (let* ((watch-data nil)
292 (collect-watch-data
293 (lambda (&rest args) (push args watch-data))))
294 (cl-flet ((should-have-watch-data (data)
295 (should (equal (pop watch-data) data))
296 (should (null watch-data))))
297 ;; Watch var0, then alias it.
298 (add-variable-watcher 'data-tests-var0 collect-watch-data)
299 (defvaralias 'data-tests-var0-alias 'data-tests-var0)
300 (setq data-tests-var0 1)
301 (should-have-watch-data '(data-tests-var0 1 set nil))
302 (setq data-tests-var0-alias 2)
303 (should-have-watch-data '(data-tests-var0 2 set nil))
304 ;; Alias var1, then watch var1-alias.
305 (defvaralias 'data-tests-var1-alias 'data-tests-var1)
306 (add-variable-watcher 'data-tests-var1-alias collect-watch-data)
307 (setq data-tests-var1 1)
308 (should-have-watch-data '(data-tests-var1 1 set nil))
309 (setq data-tests-var1-alias 2)
310 (should-have-watch-data '(data-tests-var1 2 set nil))
311 ;; Alias var2, then watch it.
312 (defvaralias 'data-tests-var2-alias 'data-tests-var2)
313 (add-variable-watcher 'data-tests-var2 collect-watch-data)
314 (setq data-tests-var2 1)
315 (should-have-watch-data '(data-tests-var2 1 set nil))
316 (setq data-tests-var2-alias 2)
317 (should-have-watch-data '(data-tests-var2 2 set nil))
318 ;; Watch var3-alias, then make it alias var3 (this removes the
319 ;; watcher flag).
320 (defvar data-tests-var3-alias 0)
321 (add-variable-watcher 'data-tests-var3-alias collect-watch-data)
322 (defvaralias 'data-tests-var3-alias 'data-tests-var3)
323 (should-have-watch-data '(data-tests-var3-alias
324 data-tests-var3 defvaralias nil))
325 (setq data-tests-var3 1)
326 (setq data-tests-var3-alias 2)
327 (should (null watch-data)))))
328
329(ert-deftest data-tests-local-variable-watchers ()
330 (defvar-local data-tests-lvar 0)
331 (let* ((buf1 (current-buffer))
332 (buf2 nil)
333 (watch-data nil)
334 (collect-watch-data
335 (lambda (&rest args) (push args watch-data))))
336 (cl-flet ((should-have-watch-data (data)
337 (should (equal (pop watch-data) data))
338 (should (null watch-data))))
339 (add-variable-watcher 'data-tests-lvar collect-watch-data)
340 (setq data-tests-lvar 1)
341 (should-have-watch-data `(data-tests-lvar 1 set ,buf1))
342 (let ((data-tests-lvar 2))
343 (should-have-watch-data `(data-tests-lvar 2 let ,buf1))
344 (setq data-tests-lvar 3)
345 (should-have-watch-data `(data-tests-lvar 3 set ,buf1)))
346 (should-have-watch-data `(data-tests-lvar 1 unlet ,buf1))
347 (setq-default data-tests-lvar 4)
348 (should-have-watch-data `(data-tests-lvar 4 set nil))
349 (with-temp-buffer
350 (setq buf2 (current-buffer))
351 (setq data-tests-lvar 1)
352 (should-have-watch-data `(data-tests-lvar 1 set ,buf2))
353 (let ((data-tests-lvar 2))
354 (should-have-watch-data `(data-tests-lvar 2 let ,buf2))
355 (setq data-tests-lvar 3)
356 (should-have-watch-data `(data-tests-lvar 3 set ,buf2)))
357 (should-have-watch-data `(data-tests-lvar 1 unlet ,buf2))
358 (kill-local-variable 'data-tests-lvar)
359 (should-have-watch-data `(data-tests-lvar nil makunbound ,buf2))
360 (setq data-tests-lvar 3.5)
361 (should-have-watch-data `(data-tests-lvar 3.5 set ,buf2))
362 (kill-all-local-variables)
363 (should-have-watch-data `(data-tests-lvar nil makunbound ,buf2)))
364 (setq-default data-tests-lvar 4)
365 (should-have-watch-data `(data-tests-lvar 4 set nil))
366 (makunbound 'data-tests-lvar)
367 (should-have-watch-data '(data-tests-lvar nil makunbound nil))
368 (setq data-tests-lvar 5)
369 (should-have-watch-data `(data-tests-lvar 5 set ,buf1))
370 (remove-variable-watcher 'data-tests-lvar collect-watch-data)
371 (setq data-tests-lvar 6)
372 (should (null watch-data)))))