aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2016-09-24 13:00:40 +0300
committerEli Zaretskii2016-09-24 13:00:40 +0300
commitef5c799c661dae1d1eb52c45d7a82e93f92b47c0 (patch)
tree7d0816ed462441f400a9ef8b8be59597aa74a43b
parent4e71b5b343c92fc587c666b98440cd8d9b36980c (diff)
downloademacs-ef5c799c661dae1d1eb52c45d7a82e93f92b47c0.tar.gz
emacs-ef5c799c661dae1d1eb52c45d7a82e93f92b47c0.zip
Incorporate occur-tests in replace-tests
* test/lisp/replace-tests.el: Add tests from test/lisp/legacy/occur-tests.el. * test/lisp/legacy/occur-tests.el: File deleted.
-rw-r--r--test/lisp/legacy/occur-tests.el352
-rw-r--r--test/lisp/replace-tests.el328
2 files changed, 327 insertions, 353 deletions
diff --git a/test/lisp/legacy/occur-tests.el b/test/lisp/legacy/occur-tests.el
deleted file mode 100644
index da45d5f6502..00000000000
--- a/test/lisp/legacy/occur-tests.el
+++ /dev/null
@@ -1,352 +0,0 @@
1;;; occur-tests.el --- Test suite for occur.
2
3;; Copyright (C) 2010-2016 Free Software Foundation, Inc.
4
5;; Author: Juri Linkov <juri@jurta.org>
6;; Keywords: matching, internal
7
8;; This file is part of GNU Emacs.
9
10;; GNU Emacs is free software: you can redistribute it and/or modify
11;; it under the terms of the GNU General Public License as published by
12;; the Free Software Foundation, either version 3 of the License, or
13;; (at your option) any later version.
14
15;; GNU Emacs is distributed in the hope that it will be useful,
16;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;; GNU General Public License for more details.
19
20;; You should have received a copy of the GNU General Public License
21;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
22
23;;; Code:
24
25(require 'ert)
26
27(defconst occur-tests
28 '(
29 ;; * Test one-line matches (at bob, eob, bol, eol).
30 ("x" 0 "\
31xa
32b
33cx
34xd
35xex
36fx
37" "\
386 matches in 5 lines for \"x\" in buffer: *test-occur*
39 1:xa
40 3:cx
41 4:xd
42 5:xex
43 6:fx
44")
45 ;; * Test multi-line matches, this is the first test from
46 ;; http://lists.gnu.org/archive/html/emacs-devel/2005-06/msg01008.html
47 ;; where numbers are replaced with letters.
48 ("a\na" 0 "\
49a
50a
51a
52a
53a
54" "\
552 matches for \"a\na\" in buffer: *test-occur*
56 1:a
57 :a
58 3:a
59 :a
60")
61 ;; * Test multi-line matches, this is the second test from
62 ;; http://lists.gnu.org/archive/html/emacs-devel/2005-06/msg01008.html
63 ;; where numbers are replaced with letters.
64 ("a\nb" 0 "\
65a
66b
67c
68a
69b
70" "\
712 matches for \"a\nb\" in buffer: *test-occur*
72 1:a
73 :b
74 4:a
75 :b
76")
77 ;; * Test line numbers for multi-line matches with empty last match line.
78 ("a\n" 0 "\
79a
80
81c
82a
83
84" "\
852 matches for \"a\n\" in buffer: *test-occur*
86 1:a
87 :
88 4:a
89 :
90")
91 ;; * Test multi-line matches with 3 match lines.
92 ("x\n.x\n" 0 "\
93ax
94bx
95c
96d
97ex
98fx
99" "\
1002 matches for \"x\n.x\n\" in buffer: *test-occur*
101 1:ax
102 :bx
103 :c
104 5:ex
105 :fx
106 :
107")
108 ;; * Test non-overlapping context lines with matches at bob/eob.
109 ("x" 1 "\
110ax
111b
112c
113d
114ex
115f
116g
117hx
118" "\
1193 matches for \"x\" in buffer: *test-occur*
120 1:ax
121 :b
122-------
123 :d
124 5:ex
125 :f
126-------
127 :g
128 8:hx
129")
130 ;; * Test non-overlapping context lines with matches not at bob/eob.
131 ("x" 1 "\
132a
133bx
134c
135d
136ex
137f
138" "\
1392 matches for \"x\" in buffer: *test-occur*
140 :a
141 2:bx
142 :c
143-------
144 :d
145 5:ex
146 :f
147")
148 ;; * Test overlapping context lines with matches at bob/eob.
149 ("x" 2 "\
150ax
151bx
152c
153dx
154e
155f
156gx
157h
158i
159j
160kx
161" "\
1625 matches for \"x\" in buffer: *test-occur*
163 1:ax
164 2:bx
165 :c
166 4:dx
167 :e
168 :f
169 7:gx
170 :h
171 :i
172 :j
173 11:kx
174")
175 ;; * Test overlapping context lines with matches not at bob/eob.
176 ("x" 2 "\
177a
178b
179cx
180d
181e
182f
183gx
184h
185i
186" "\
1872 matches for \"x\" in buffer: *test-occur*
188 :a
189 :b
190 3:cx
191 :d
192 :e
193 :f
194 7:gx
195 :h
196 :i
197")
198 ;; * Test overlapping context lines with empty first and last line..
199 ("x" 2 "\
200
201b
202cx
203d
204e
205f
206gx
207h
208
209" "\
2102 matches for \"x\" in buffer: *test-occur*
211 :
212 :b
213 3:cx
214 :d
215 :e
216 :f
217 7:gx
218 :h
219 :
220")
221 ;; * Test multi-line overlapping context lines.
222 ("x\n.x" 2 "\
223ax
224bx
225c
226d
227ex
228fx
229g
230h
231i
232jx
233kx
234" "\
2353 matches for \"x\n.x\" in buffer: *test-occur*
236 1:ax
237 :bx
238 :c
239 :d
240 5:ex
241 :fx
242 :g
243 :h
244 :i
245 10:jx
246 :kx
247")
248 ;; * Test multi-line non-overlapping context lines.
249 ("x\n.x" 2 "\
250ax
251bx
252c
253d
254e
255f
256gx
257hx
258" "\
2592 matches for \"x\n.x\" in buffer: *test-occur*
260 1:ax
261 :bx
262 :c
263 :d
264-------
265 :e
266 :f
267 7:gx
268 :hx
269")
270 ;; * Test non-overlapping negative (before-context) lines.
271 ("x" -2 "\
272a
273bx
274c
275d
276e
277fx
278g
279h
280ix
281" "\
2823 matches for \"x\" in buffer: *test-occur*
283 :a
284 2:bx
285-------
286 :d
287 :e
288 6:fx
289-------
290 :g
291 :h
292 9:ix
293")
294 ;; * Test overlapping negative (before-context) lines.
295 ("x" -3 "\
296a
297bx
298c
299dx
300e
301f
302gx
303h
304" "\
3053 matches for \"x\" in buffer: *test-occur*
306 :a
307 2:bx
308 :c
309 4:dx
310 :e
311 :f
312 7:gx
313")
314
315)
316 "List of tests for `occur'.
317Each element has the format:
318\(REGEXP NLINES INPUT-BUFFER-STRING OUTPUT-BUFFER-STRING).")
319
320(defun occur-test-case (test)
321 (let ((regexp (nth 0 test))
322 (nlines (nth 1 test))
323 (input-buffer-string (nth 2 test))
324 (temp-buffer (get-buffer-create " *test-occur*")))
325 (unwind-protect
326 (save-window-excursion
327 (with-current-buffer temp-buffer
328 (erase-buffer)
329 (insert input-buffer-string)
330 (occur regexp nlines)
331 (with-current-buffer "*Occur*"
332 (buffer-substring-no-properties (point-min) (point-max)))))
333 (and (buffer-name temp-buffer)
334 (kill-buffer temp-buffer)))))
335
336(defun occur-test-create (n)
337 "Create a test for element N of the `occur-tests' constant."
338 (let ((testname (intern (format "occur-test-%.2d" n)))
339 (testdoc (format "Test element %d of `occur-tests'." n)))
340 (eval
341 `(ert-deftest ,testname ()
342 ,testdoc
343 (let (occur-hook)
344 (should (equal (occur-test-case (nth ,n occur-tests))
345 (nth 3 (nth ,n occur-tests)))))))))
346
347(dotimes (i (length occur-tests))
348 (occur-test-create i))
349
350(provide 'occur-tests)
351
352;;; occur-tests.el ends here
diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el
index bfaab6c8944..2b71348f350 100644
--- a/test/lisp/replace-tests.el
+++ b/test/lisp/replace-tests.el
@@ -1,6 +1,9 @@
1;;; replace-tests.el --- tests for replace.el. 1;;; replace-tests.el --- tests for replace.el.
2 2
3;; Copyright (C) 2015-2016 Free Software Foundation, Inc. 3;; Copyright (C) 2010-2016 Free Software Foundation, Inc.
4
5;; Author: Nicolas Richard <youngfrog@members.fsf.org>
6;; Author: Juri Linkov <juri@jurta.org>
4 7
5;; This file is part of GNU Emacs. 8;; This file is part of GNU Emacs.
6 9
@@ -32,4 +35,327 @@
32 (query-replace--split-string (concat before "\0" after)) 35 (query-replace--split-string (concat before "\0" after))
33 (concat before "\0" after))))))) 36 (concat before "\0" after)))))))
34 37
38(defconst replace-occur-tests
39 '(
40 ;; * Test one-line matches (at bob, eob, bol, eol).
41 ("x" 0 "\
42xa
43b
44cx
45xd
46xex
47fx
48" "\
496 matches in 5 lines for \"x\" in buffer: *test-occur*
50 1:xa
51 3:cx
52 4:xd
53 5:xex
54 6:fx
55")
56 ;; * Test multi-line matches, this is the first test from
57 ;; http://lists.gnu.org/archive/html/emacs-devel/2005-06/msg01008.html
58 ;; where numbers are replaced with letters.
59 ("a\na" 0 "\
60a
61a
62a
63a
64a
65" "\
662 matches for \"a\na\" in buffer: *test-occur*
67 1:a
68 :a
69 3:a
70 :a
71")
72 ;; * Test multi-line matches, this is the second test from
73 ;; http://lists.gnu.org/archive/html/emacs-devel/2005-06/msg01008.html
74 ;; where numbers are replaced with letters.
75 ("a\nb" 0 "\
76a
77b
78c
79a
80b
81" "\
822 matches for \"a\nb\" in buffer: *test-occur*
83 1:a
84 :b
85 4:a
86 :b
87")
88 ;; * Test line numbers for multi-line matches with empty last match line.
89 ("a\n" 0 "\
90a
91
92c
93a
94
95" "\
962 matches for \"a\n\" in buffer: *test-occur*
97 1:a
98 :
99 4:a
100 :
101")
102 ;; * Test multi-line matches with 3 match lines.
103 ("x\n.x\n" 0 "\
104ax
105bx
106c
107d
108ex
109fx
110" "\
1112 matches for \"x\n.x\n\" in buffer: *test-occur*
112 1:ax
113 :bx
114 :c
115 5:ex
116 :fx
117 :
118")
119 ;; * Test non-overlapping context lines with matches at bob/eob.
120 ("x" 1 "\
121ax
122b
123c
124d
125ex
126f
127g
128hx
129" "\
1303 matches for \"x\" in buffer: *test-occur*
131 1:ax
132 :b
133-------
134 :d
135 5:ex
136 :f
137-------
138 :g
139 8:hx
140")
141 ;; * Test non-overlapping context lines with matches not at bob/eob.
142 ("x" 1 "\
143a
144bx
145c
146d
147ex
148f
149" "\
1502 matches for \"x\" in buffer: *test-occur*
151 :a
152 2:bx
153 :c
154-------
155 :d
156 5:ex
157 :f
158")
159 ;; * Test overlapping context lines with matches at bob/eob.
160 ("x" 2 "\
161ax
162bx
163c
164dx
165e
166f
167gx
168h
169i
170j
171kx
172" "\
1735 matches for \"x\" in buffer: *test-occur*
174 1:ax
175 2:bx
176 :c
177 4:dx
178 :e
179 :f
180 7:gx
181 :h
182 :i
183 :j
184 11:kx
185")
186 ;; * Test overlapping context lines with matches not at bob/eob.
187 ("x" 2 "\
188a
189b
190cx
191d
192e
193f
194gx
195h
196i
197" "\
1982 matches for \"x\" in buffer: *test-occur*
199 :a
200 :b
201 3:cx
202 :d
203 :e
204 :f
205 7:gx
206 :h
207 :i
208")
209 ;; * Test overlapping context lines with empty first and last line..
210 ("x" 2 "\
211
212b
213cx
214d
215e
216f
217gx
218h
219
220" "\
2212 matches for \"x\" in buffer: *test-occur*
222 :
223 :b
224 3:cx
225 :d
226 :e
227 :f
228 7:gx
229 :h
230 :
231")
232 ;; * Test multi-line overlapping context lines.
233 ("x\n.x" 2 "\
234ax
235bx
236c
237d
238ex
239fx
240g
241h
242i
243jx
244kx
245" "\
2463 matches for \"x\n.x\" in buffer: *test-occur*
247 1:ax
248 :bx
249 :c
250 :d
251 5:ex
252 :fx
253 :g
254 :h
255 :i
256 10:jx
257 :kx
258")
259 ;; * Test multi-line non-overlapping context lines.
260 ("x\n.x" 2 "\
261ax
262bx
263c
264d
265e
266f
267gx
268hx
269" "\
2702 matches for \"x\n.x\" in buffer: *test-occur*
271 1:ax
272 :bx
273 :c
274 :d
275-------
276 :e
277 :f
278 7:gx
279 :hx
280")
281 ;; * Test non-overlapping negative (before-context) lines.
282 ("x" -2 "\
283a
284bx
285c
286d
287e
288fx
289g
290h
291ix
292" "\
2933 matches for \"x\" in buffer: *test-occur*
294 :a
295 2:bx
296-------
297 :d
298 :e
299 6:fx
300-------
301 :g
302 :h
303 9:ix
304")
305 ;; * Test overlapping negative (before-context) lines.
306 ("x" -3 "\
307a
308bx
309c
310dx
311e
312f
313gx
314h
315" "\
3163 matches for \"x\" in buffer: *test-occur*
317 :a
318 2:bx
319 :c
320 4:dx
321 :e
322 :f
323 7:gx
324")
325
326)
327 "List of tests for `occur'.
328Each element has the format:
329\(REGEXP NLINES INPUT-BUFFER-STRING OUTPUT-BUFFER-STRING).")
330
331(defun replace-occur-test-case (test)
332 (let ((regexp (nth 0 test))
333 (nlines (nth 1 test))
334 (input-buffer-string (nth 2 test))
335 (temp-buffer (get-buffer-create " *test-occur*")))
336 (unwind-protect
337 (save-window-excursion
338 (with-current-buffer temp-buffer
339 (erase-buffer)
340 (insert input-buffer-string)
341 (occur regexp nlines)
342 (with-current-buffer "*Occur*"
343 (buffer-substring-no-properties (point-min) (point-max)))))
344 (and (buffer-name temp-buffer)
345 (kill-buffer temp-buffer)))))
346
347(defun replace-occur-test-create (n)
348 "Create a test for element N of the `replace-occur-tests' constant."
349 (let ((testname (intern (format "occur-test-%.2d" n)))
350 (testdoc (format "Test element %d of `replace-occur-tests'." n)))
351 (eval
352 `(ert-deftest ,testname ()
353 ,testdoc
354 (let (replace-occur-hook)
355 (should (equal (replace-occur-test-case (nth ,n replace-occur-tests))
356 (nth 3 (nth ,n replace-occur-tests)))))))))
357
358(dotimes (i (length replace-occur-tests))
359 (replace-occur-test-create i))
360
35;;; replace-tests.el ends here 361;;; replace-tests.el ends here