1 ;;; imenu-tests.el --- Test suite for imenu.
3 ;; Copyright (C) 2013 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/>.
27 ;; (imenu-simple-scan-deftest-gather-strings-from-list
28 ;; '(nil t 'a (0 . "x") ("c" . "d") ("a" 0 "b") ))
29 ;; => ("b" "a" "d" "c" "x")
30 (defun imenu-simple-scan-deftest-gather-strings-from-list(input)
31 "Gather strings from INPUT, a list."
36 (setq result
(cons input result
)
42 (imenu-simple-scan-deftest-gather-strings-from-list (car input
))
45 ((stringp (car input
))
46 (setq result
(cons (car input
) result
)
49 (setq input
(cdr input
)))))
52 (defmacro imenu-simple-scan-deftest
(name doc major-mode content expected-items
)
53 "Generate an ert test for mode-own imenu expression.
54 Run `imenu-create-index-function' at the buffer which content is
55 CONTENT with MAJOR-MODE. A generated test runs `imenu-create-index-function'
56 at the buffer which content is CONTENT with MAJOR-MODE. Then it compares a list
57 of strings which are picked up from the result with EXPECTED-ITEMS."
58 (let ((xname (intern (concat "imenu-simple-scan-deftest-" (symbol-name name
)))))
59 `(ert-deftest ,xname
()
63 (funcall ',major-mode
)
64 (let ((result-items (sort (imenu-simple-scan-deftest-gather-strings-from-list
65 (funcall imenu-create-index-function
))
67 (expected-items (sort (copy-sequence ,expected-items
) #'string-lessp
)))
68 (should (equal result-items expected-items
))
71 (imenu-simple-scan-deftest sh
"Test imenu expression for sh-mode." sh-mode
"a()
83 " '("a" "b" "c" "ABC_D"))
85 (provide 'imenu-tests
)
87 ;;; imenu-tests.el ends here