summaryrefslogtreecommitdiff
path: root/tests/test-undead-buffers-make-buffer-undead.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-undead-buffers-make-buffer-undead.el')
-rw-r--r--tests/test-undead-buffers-make-buffer-undead.el134
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