blob: 823bb56ee8716557a7c7aa4b0fa2ea5269a88a56 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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
|