aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Malabarba2015-10-24 23:43:06 +0100
committerArtur Malabarba2015-10-26 00:27:10 +0000
commit207f235e33ce9226d4004b47ccef89b3ea3c7fdb (patch)
treed45a2f470194cf07b69bc551698b6e5fa7359431
parentbd4f04f86cea893e3369decdda074a4898491518 (diff)
downloademacs-207f235e33ce9226d4004b47ccef89b3ea3c7fdb.tar.gz
emacs-207f235e33ce9226d4004b47ccef89b3ea3c7fdb.zip
* test/automated/simple-test.el: New file
Define tests for `newline' and `open-line'.
-rw-r--r--test/automated/simple-test.el183
1 files changed, 183 insertions, 0 deletions
diff --git a/test/automated/simple-test.el b/test/automated/simple-test.el
new file mode 100644
index 00000000000..a9c4d67556e
--- /dev/null
+++ b/test/automated/simple-test.el
@@ -0,0 +1,183 @@
1;;; simple-test.el --- Tests for simple.el -*- lexical-binding: t; -*-
2
3;; Copyright (C) 2015 Free Software Foundation, Inc.
4
5;; Author: Artur Malabarba <bruce.connor.am@gmail.com>
6
7;; This program is free software; you can redistribute it and/or modify
8;; it under the terms of the GNU General Public License as published by
9;; the Free Software Foundation, either version 3 of the License, or
10;; (at your option) any later version.
11
12;; This program is distributed in the hope that it will be useful,
13;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;; GNU General Public License for more details.
16
17;; You should have received a copy of the GNU General Public License
18;; along with this program. If not, see <http://www.gnu.org/licenses/>.
19
20;;; Code:
21
22(require 'ert)
23
24(defmacro simple-test--dummy-buffer (&rest body)
25 (declare (indent 0)
26 (debug t))
27 `(with-temp-buffer
28 (emacs-lisp-mode)
29 (insert "(a b")
30 (save-excursion (insert " c d)"))
31 ,@body
32 (cons (buffer-substring (point-min) (point))
33 (buffer-substring (point) (point-max)))))
34
35
36
37;;; `newline'
38(ert-deftest newline ()
39 (should-error (newline -1))
40 (should (equal (simple-test--dummy-buffer (newline 1))
41 '("(a b\n" . " c d)")))
42 (should (equal (simple-test--dummy-buffer
43 (electric-indent-mode -1)
44 (call-interactively #'newline))
45 '("(a b\n" . " c d)")))
46 (should (equal (simple-test--dummy-buffer
47 (let ((current-prefix-arg 5))
48 (call-interactively #'newline)))
49 '("(a b\n\n\n\n\n" . " c d)")))
50 (should (equal (simple-test--dummy-buffer (newline 5))
51 '("(a b\n\n\n\n\n" . " c d)")))
52 (should (equal (simple-test--dummy-buffer
53 (forward-char 1)
54 (newline 1))
55 '("(a b \n" . "c d)"))))
56
57(ert-deftest newline-indent ()
58 (should (equal (simple-test--dummy-buffer
59 (electric-indent-local-mode 1)
60 (newline 1))
61 '("(a b\n" . " c d)")))
62 (should (equal (simple-test--dummy-buffer
63 (electric-indent-local-mode 1)
64 (newline 1 'interactive))
65 '("(a b\n " . "c d)")))
66 (should (equal (simple-test--dummy-buffer
67 (electric-indent-local-mode 1)
68 (let ((current-prefix-arg nil))
69 (call-interactively #'newline)
70 (call-interactively #'newline)))
71 '("(a b\n\n " . "c d)")))
72 (should (equal (simple-test--dummy-buffer
73 (electric-indent-local-mode 1)
74 (newline 5 'interactive))
75 '("(a b\n\n\n\n\n " . "c d)")))
76 (should (equal (simple-test--dummy-buffer
77 (electric-indent-local-mode 1)
78 (let ((current-prefix-arg 5))
79 (call-interactively #'newline)))
80 '("(a b\n\n\n\n\n " . "c d)")))
81 (should (equal (simple-test--dummy-buffer
82 (forward-char 1)
83 (electric-indent-local-mode 1)
84 (newline 1 'interactive))
85 '("(a b\n " . "c d)"))))
86
87
88;;; `open-line'
89(ert-deftest open-line ()
90 (should-error (open-line -1))
91 (should-error (open-line))
92 (should (equal (simple-test--dummy-buffer (open-line 1))
93 '("(a b" . "\n c d)")))
94 (should (equal (simple-test--dummy-buffer
95 (electric-indent-mode -1)
96 (call-interactively #'open-line))
97 '("(a b" . "\n c d)")))
98 (should (equal (simple-test--dummy-buffer
99 (let ((current-prefix-arg 5))
100 (call-interactively #'open-line)))
101 '("(a b" . "\n\n\n\n\n c d)")))
102 (should (equal (simple-test--dummy-buffer (open-line 5))
103 '("(a b" . "\n\n\n\n\n c d)")))
104 (should (equal (simple-test--dummy-buffer
105 (forward-char 1)
106 (open-line 1))
107 '("(a b " . "\nc d)"))))
108
109(ert-deftest open-line-margin-and-prefix ()
110 (should (equal (simple-test--dummy-buffer
111 (let ((left-margin 10))
112 (open-line 3)))
113 '("(a b" . "\n\n\n c d)")))
114 (should (equal (simple-test--dummy-buffer
115 (forward-line 0)
116 (let ((left-margin 2))
117 (open-line 1)))
118 '(" " . "\n (a b c d)")))
119 (should (equal (simple-test--dummy-buffer
120 (let ((fill-prefix "- - "))
121 (open-line 1)))
122 '("(a b" . "\n c d)")))
123 (should (equal (simple-test--dummy-buffer
124 (forward-line 0)
125 (let ((fill-prefix "- - "))
126 (open-line 1)))
127 '("- - " . "\n(a b c d)"))))
128
129(ert-deftest open-line-indent ()
130 (should (equal (simple-test--dummy-buffer
131 (electric-indent-local-mode 1)
132 (open-line 1))
133 '("(a b" . "\n c d)")))
134 (should (equal (simple-test--dummy-buffer
135 (electric-indent-local-mode 1)
136 (open-line 1 'interactive))
137 '("(a b" . "\n c d)")))
138 (should (equal (simple-test--dummy-buffer
139 (electric-indent-local-mode 1)
140 (let ((current-prefix-arg nil))
141 (call-interactively #'open-line)
142 (call-interactively #'open-line)))
143 '("(a b" . "\n\n c d)")))
144 (should (equal (simple-test--dummy-buffer
145 (electric-indent-local-mode 1)
146 (open-line 5 'interactive))
147 '("(a b" . "\n\n\n\n\n c d)")))
148 (should (equal (simple-test--dummy-buffer
149 (electric-indent-local-mode 1)
150 (let ((current-prefix-arg 5))
151 (call-interactively #'open-line)))
152 '("(a b" . "\n\n\n\n\n c d)")))
153 (should (equal (simple-test--dummy-buffer
154 (forward-char 1)
155 (electric-indent-local-mode 1)
156 (open-line 1 'interactive))
157 '("(a b" . "\n c d)"))))
158
159(ert-deftest open-line-hook ()
160 (let* ((x 0)
161 (inc (lambda () (setq x (1+ x)))))
162 (simple-test--dummy-buffer
163 (add-hook 'post-self-insert-hook inc nil 'local)
164 (open-line 1))
165 (should (= x 0))
166 (simple-test--dummy-buffer
167 (add-hook 'post-self-insert-hook inc nil 'local)
168 (open-line 1 'interactive))
169 (should (= x 1))
170
171 (unwind-protect
172 (progn
173 (add-hook 'post-self-insert-hook inc)
174 (simple-test--dummy-buffer
175 (open-line 1))
176 (should (= x 1))
177 (simple-test--dummy-buffer
178 (open-line 10 'interactive))
179 (should (= x 2)))
180 (remove-hook 'post-self-insert-hook inc))))
181
182(provide 'simple-test)
183;;; simple-test.el ends here