1 ;;; imenu-tests.el --- Test suite for imenu.
3 ;; Copyright (C) 2013-2014 Free Software Foundation, Inc.
5 ;; Author: Masatake YAMATO <yamato@redhat.com>
6 ;; Keywords: tools convenience
8 ;; This file is part of GNU Emacs.
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.
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.
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/>.
28 ;; (imenu-simple-scan-deftest-gather-strings-from-list
29 ;; '(nil t 'a (0 . "x") ("c" . "d") ("a" 0 "b") ))
30 ;; => ("b" "a" "d" "c" "x")
31 (defun imenu-simple-scan-deftest-gather-strings-from-list(input)
32 "Gather strings from INPUT, a list."
37 (setq result
(cons input result
)
43 (imenu-simple-scan-deftest-gather-strings-from-list (car input
))
46 ((stringp (car input
))
47 (setq result
(cons (car input
) result
)
50 (setq input
(cdr input
)))))
53 (defmacro imenu-simple-scan-deftest
(name doc major-mode content expected-items
)
54 "Generate an ert test for mode-own imenu expression.
55 Run `imenu-create-index-function' at the buffer which content is
56 CONTENT with MAJOR-MODE. A generated test runs `imenu-create-index-function'
57 at the buffer which content is CONTENT with MAJOR-MODE. Then it compares a list
58 of strings which are picked up from the result with EXPECTED-ITEMS."
59 (let ((xname (intern (concat "imenu-simple-scan-deftest-" (symbol-name name
)))))
60 `(ert-deftest ,xname
()
64 (funcall ',major-mode
)
65 (let ((result-items (sort (imenu-simple-scan-deftest-gather-strings-from-list
66 (funcall imenu-create-index-function
))
68 (expected-items (sort (copy-sequence ,expected-items
) #'string-lessp
)))
69 (should (equal result-items expected-items
))
72 (imenu-simple-scan-deftest sh
"Test imenu expression for sh-mode." sh-mode
"a()
84 " '("a" "b" "c" "ABC_D"))
86 (provide 'imenu-tests
)
88 ;;; imenu-tests.el ends here