diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-undead-buffers--buffer-undead-p.el | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/test-undead-buffers--buffer-undead-p.el b/tests/test-undead-buffers--buffer-undead-p.el new file mode 100644 index 000000000..e196e41a9 --- /dev/null +++ b/tests/test-undead-buffers--buffer-undead-p.el @@ -0,0 +1,52 @@ +;;; test-undead-buffers--buffer-undead-p.el --- undead predicate (name + regexp) -*- lexical-binding: t; -*- + +;;; Commentary: +;; `cj/--buffer-undead-p' decides whether a buffer name is buried instead of +;; killed. A name is undead when it is in `cj/undead-buffer-list' (exact) or +;; matches any regexp in `cj/undead-buffer-regexps' (dynamic families like the +;; ai-term agent buffers, named "agent [<project>]"). `cj/make-buffer-pattern-undead' +;; registers a regexp. + +;;; Code: + +(require 'ert) +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'undead-buffers) + +(ert-deftest test-undead-buffer-undead-p-name-list () + "Normal: a name in the exact list is undead; others are not." + (let ((cj/undead-buffer-list '("*scratch*" "*Messages*")) + (cj/undead-buffer-regexps nil)) + (should (cj/--buffer-undead-p "*scratch*")) + (should (cj/--buffer-undead-p "*Messages*")) + (should-not (cj/--buffer-undead-p "other")))) + +(ert-deftest test-undead-buffer-undead-p-regexp () + "Normal: a name matching a regexp is undead; the agent pattern is anchored." + (let ((cj/undead-buffer-list nil) + (cj/undead-buffer-regexps '("\\`agent \\["))) + (should (cj/--buffer-undead-p "agent [rulesets]")) + (should (cj/--buffer-undead-p "agent [.emacs.d]")) + (should-not (cj/--buffer-undead-p "not an agent")) + (should-not (cj/--buffer-undead-p "my agent [x]")))) ; anchored: must start with "agent [" + +(ert-deftest test-undead-buffer-undead-p-neither () + "Boundary/Error: a name in neither, an empty string, and a non-string are not undead." + (let ((cj/undead-buffer-list '("*scratch*")) + (cj/undead-buffer-regexps '("\\`agent \\["))) + (should-not (cj/--buffer-undead-p "random")) + (should-not (cj/--buffer-undead-p "")) + (should-not (cj/--buffer-undead-p nil)))) + +(ert-deftest test-undead-make-buffer-pattern-undead-adds-and-rejects () + "Normal/Error: registering a regexp makes matching names undead; a blank or +non-string regexp signals." + (let ((cj/undead-buffer-regexps nil)) + (cj/make-buffer-pattern-undead "\\`agent \\[") + (should (member "\\`agent \\[" cj/undead-buffer-regexps)) + (should (cj/--buffer-undead-p "agent [x]")) + (should-error (cj/make-buffer-pattern-undead "")) + (should-error (cj/make-buffer-pattern-undead 42)))) + +(provide 'test-undead-buffers--buffer-undead-p) +;;; test-undead-buffers--buffer-undead-p.el ends here |
