65 lines
1.9 KiB
EmacsLisp
65 lines
1.9 KiB
EmacsLisp
;;; ../test/test-core-lib.el
|
|
|
|
(def-test-group! core-lib
|
|
;; `add-hook!'
|
|
(ert-deftest add-one-to-one-hook ()
|
|
(let (hooks)
|
|
(add-hook! 'hooks 'a-hook)
|
|
(should (equal hooks '(a-hook)))))
|
|
|
|
(ert-deftest add-many-to-one-hook ()
|
|
(let (hooks)
|
|
(add-hook! 'hooks '(hook-a hook-b hook-c))
|
|
(should (equal hooks '(hook-c hook-b hook-a)))))
|
|
|
|
(ert-deftest add-one-to-many-hooks ()
|
|
(let (hooks-a hooks-b hooks-c)
|
|
(add-hook! '(hooks-a hooks-b hooks-c) 'a-hook)
|
|
(should (equal hooks-a '(a-hook)))
|
|
(should (equal hooks-b '(a-hook)))
|
|
(should (equal hooks-c '(a-hook)))))
|
|
|
|
(ert-deftest add-many-to-many-hooks ()
|
|
(let (hooks-a hooks-b hooks-c)
|
|
(add-hook! '(hooks-a hooks-b hooks-c) '(hook-a hook-b hook-c))
|
|
(should (equal hooks-a '(hook-c hook-b hook-a)))
|
|
(should (equal hooks-b '(hook-c hook-b hook-a)))
|
|
(should (equal hooks-c '(hook-c hook-b hook-a)))))
|
|
|
|
(ert-deftest add-non-literal-hooks ()
|
|
(let (some-mode-hook)
|
|
(add-hook! some-mode 'a-hook)
|
|
(should (equal some-mode-hook '(a-hook)))))
|
|
|
|
;; `remove-hook!'
|
|
(ert-deftest remove-hooks ()
|
|
(let ((hooks-a '(hook-c hook-b hook-a))
|
|
(hooks-b '(hook-c hook-b hook-a))
|
|
(hooks-c '(hook-c hook-b hook-a)))
|
|
(remove-hook! '(hooks-a hooks-b hooks-c) '(hook-a hook-b hook-c))
|
|
(should (null hooks-a))
|
|
(should (null hooks-b))
|
|
(should (null hooks-c))))
|
|
|
|
;; `add-transient-hook!'
|
|
(ert-deftest transient-hooks ()
|
|
(let (hooks value)
|
|
(add-transient-hook! hooks (setq value t))
|
|
(run-hooks 'hooks)
|
|
(should (eq value t))
|
|
(should (null hooks))))
|
|
|
|
(ert-deftest transient-function ()
|
|
(let (value)
|
|
(add-transient-hook! ignore (setq value (not value)))
|
|
(ignore t)
|
|
(should (eq value t))
|
|
;; repeat to ensure it was only run once
|
|
(ignore t)
|
|
(should (eq value t))))
|
|
|
|
;; TODO `associate!'
|
|
|
|
;; TODO `def-setting!' & `set!'
|
|
|
|
)
|