diff options
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 |
