Merge from gnulib
[emacs.git] / test / automated / subword-tests.el
blobbedb1523999ddc73df032d3d7ac8c93a9ca5381b
1 ;;; subword-tests.el --- Testing the subword rules
3 ;; Copyright (C) 2011-2015 Free Software Foundation, Inc.
5 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
6 ;; Keywords:
8 ;; This program is free software; you can redistribute it and/or modify
9 ;; it under the terms of the GNU General Public License as published by
10 ;; the Free Software Foundation, either version 3 of the License, or
11 ;; (at your option) any later version.
13 ;; This program is distributed in the hope that it will be useful,
14 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ;; GNU General Public License for more details.
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
21 ;;; Commentary:
25 ;;; Code:
27 (require 'ert)
28 (require 'subword)
30 (defconst subword-tests-strings
31 '("ABC^" ;;Bug#13758
32 "ABC^ ABC^Foo^ ABC^-Foo^ toto^ ABC^"))
34 (ert-deftest subword-tests ()
35 "Test the `subword-mode' rules."
36 (with-temp-buffer
37 (dolist (str subword-tests-strings)
38 (erase-buffer)
39 (insert str)
40 (goto-char (point-min))
41 (while (search-forward "^" nil t)
42 (replace-match ""))
43 (goto-char (point-min))
44 (while (not (eobp))
45 (subword-forward 1)
46 (insert "^"))
47 (should (equal (buffer-string) str)))))
49 (ert-deftest subword-tests2 ()
50 "Test that motion in subword-mode stops at the right places."
52 (let* ((line "fooBarBAZ quXD g_TESTThingAbc word BLAH test")
53 (fwrd "* * * * * * * * * * * * *")
54 (bkwd "* * * * * * * * * * * * *"))
56 (with-temp-buffer
57 (subword-mode 1)
58 (insert line)
60 ;; Test forward motion.
62 (goto-char (point-min))
63 (let ((stops (make-string (length fwrd) ?\ )))
64 (while (progn
65 (aset stops (1- (point)) ?\*)
66 (not (eobp)))
67 (forward-word))
68 (should (equal stops fwrd)))
70 ;; Test backward motion.
72 (goto-char (point-max))
73 (let ((stops (make-string (length bkwd) ?\ )))
74 (while (progn
75 (aset stops (1- (point)) ?\*)
76 (not (bobp)))
77 (backward-word))
78 (should (equal stops bkwd))))))
80 (provide 'subword-tests)
81 ;;; subword-tests.el ends here