diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-22 12:27:05 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-22 12:27:05 -0500 |
| commit | c4e9232f297ffda4443477c589f29052178d2c87 (patch) | |
| tree | f4c50c999bf18a57e08c439ad244b23b006d0730 /tests/test-undead-buffers-make-buffer-undead.el | |
| parent | 2a543ea6a0fd018a24008fba514a6967c3f62cfb (diff) | |
feat: undead-buffers: Add `cj/make-buffer-undead` function and tests
Introduce a new function `cj/make-buffer-undead` that appends a
buffer name to the `cj/undead-buffer-list`, preventing it from being
killed. This comes along with a suite of tests to check various
scenarios and edge cases for handling undead buffers.
Additionally, add tests for related functions:
`cj/kill-buffer-or-bury-alive`, `cj/kill-buffer-and-window`, and
others to ensure they correctly manage buffers, particularly with
undead-status considerations.
Refactor `undead-buffer-list` naming for consistency and clarity in
the module.
Diffstat (limited to 'tests/test-undead-buffers-make-buffer-undead.el')
| -rw-r--r-- | tests/test-undead-buffers-make-buffer-undead.el | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tests/test-undead-buffers-make-buffer-undead.el b/tests/test-undead-buffers-make-buffer-undead.el new file mode 100644 index 00000000..823bb56e --- /dev/null +++ b/tests/test-undead-buffers-make-buffer-undead.el @@ -0,0 +1,134 @@ +;;; test-undead-buffers-make-buffer-undead.el --- Tests for cj/make-buffer-undead -*- lexical-binding: t; -*- + +;;; Commentary: +;; Tests for the cj/make-buffer-undead function from undead-buffers.el + +;;; Code: + +(require 'ert) +(require 'undead-buffers) +(require 'testutil-general) + +;;; Setup and Teardown + +(defun test-make-buffer-undead-setup () + "Setup for make-buffer-undead tests." + (cj/create-test-base-dir)) + +(defun test-make-buffer-undead-teardown () + "Teardown for make-buffer-undead tests." + (cj/delete-test-base-dir)) + +;;; Normal Cases + +(ert-deftest test-make-buffer-undead-valid-name-should-add-to-list () + "Adding a valid buffer name should add it to the undead buffer list." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list))) + (unwind-protect + (progn + (cj/make-buffer-undead "*test-buffer*") + (should (member "*test-buffer*" cj/undead-buffer-list))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-existing-name-should-not-duplicate () + "Adding an existing buffer name should not create duplicates." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list))) + (unwind-protect + (progn + (cj/make-buffer-undead "*test-dup*") + (cj/make-buffer-undead "*test-dup*") + (should (= 1 (cl-count "*test-dup*" cj/undead-buffer-list :test #'string=)))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-multiple-additions-should-preserve-order () + "Adding multiple buffer names should preserve order." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list))) + (unwind-protect + (progn + (cj/make-buffer-undead "*first*") + (cj/make-buffer-undead "*second*") + (cj/make-buffer-undead "*third*") + (let ((added-items (seq-drop cj/undead-buffer-list (length orig)))) + (should (equal added-items '("*first*" "*second*" "*third*"))))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +;;; Boundary Cases + +(ert-deftest test-make-buffer-undead-whitespace-only-name-should-add () + "Adding a whitespace-only name should succeed." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list))) + (unwind-protect + (progn + (cj/make-buffer-undead " ") + (should (member " " cj/undead-buffer-list))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-very-long-name-should-add () + "Adding a very long buffer name should succeed." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list)) + (long-name (make-string 1000 ?x))) + (unwind-protect + (progn + (cj/make-buffer-undead long-name) + (should (member long-name cj/undead-buffer-list))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-unicode-name-should-add () + "Adding a buffer name with Unicode characters should succeed." + (test-make-buffer-undead-setup) + (unwind-protect + (let ((orig (copy-sequence cj/undead-buffer-list))) + (unwind-protect + (progn + (cj/make-buffer-undead "*test-🚀-buffer*") + (should (member "*test-🚀-buffer*" cj/undead-buffer-list))) + (setq cj/undead-buffer-list orig))) + (test-make-buffer-undead-teardown))) + +;;; Error Cases + +(ert-deftest test-make-buffer-undead-empty-string-should-error () + "Passing an empty string should signal an error." + (test-make-buffer-undead-setup) + (unwind-protect + (should-error (cj/make-buffer-undead "")) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-nil-should-error () + "Passing nil should signal an error." + (test-make-buffer-undead-setup) + (unwind-protect + (should-error (cj/make-buffer-undead nil)) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-number-should-error () + "Passing a number should signal an error." + (test-make-buffer-undead-setup) + (unwind-protect + (should-error (cj/make-buffer-undead 42)) + (test-make-buffer-undead-teardown))) + +(ert-deftest test-make-buffer-undead-symbol-should-error () + "Passing a symbol should signal an error." + (test-make-buffer-undead-setup) + (unwind-protect + (should-error (cj/make-buffer-undead 'some-symbol)) + (test-make-buffer-undead-teardown))) + +(provide 'test-undead-buffers-make-buffer-undead) +;;; test-undead-buffers-make-buffer-undead.el ends here |
