Commit | Line | Data |
---|---|---|
6e5c1569 CY |
1 | ;;; thingatpt.el --- tests for thing-at-point. |
2 | ||
ba318903 | 3 | ;; Copyright (C) 2013-2014 Free Software Foundation, Inc. |
6e5c1569 CY |
4 | |
5 | ;; This file is part of GNU Emacs. | |
6 | ||
7 | ;; GNU Emacs 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 | ;; GNU Emacs 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 GNU Emacs. If not, see <http://www.gnu.org/licenses/>. | |
19 | ||
20 | ;;; Code: | |
21 | ||
22 | (require 'ert) | |
23 | ||
24 | (defvar thing-at-point-test-data | |
25 | '(("http://1.gnu.org" 1 url "http://1.gnu.org") | |
26 | ("http://2.gnu.org" 6 url "http://2.gnu.org") | |
27 | ("http://3.gnu.org" 19 url "http://3.gnu.org") | |
28 | ("https://4.gnu.org" 1 url "https://4.gnu.org") | |
29 | ("bzr://savannah.gnu.org" 1 url "bzr://savannah.gnu.org") | |
30 | ("A geo URI (geo:3.14159,-2.71828)." 12 url "geo:3.14159,-2.71828") | |
31 | ("Visit http://5.gnu.org now." 5 url nil) | |
32 | ("Visit http://6.gnu.org now." 7 url "http://6.gnu.org") | |
33 | ("Visit http://7.gnu.org now." 22 url "http://7.gnu.org") | |
34 | ("Visit http://8.gnu.org now." 22 url "http://8.gnu.org") | |
35 | ("Visit http://9.gnu.org now." 24 url nil) | |
36 | ;; Invalid URIs | |
37 | ("<<<<" 2 url nil) | |
38 | ("<>" 1 url nil) | |
39 | ("<url:>" 1 url nil) | |
40 | ("http://" 1 url nil) | |
41 | ;; Invalid schema | |
42 | ("foo://www.gnu.org" 1 url nil) | |
43 | ("foohttp://www.gnu.org" 1 url nil) | |
44 | ;; Non alphanumeric characters can be found in URIs | |
45 | ("ftp://example.net/~foo!;#bar=baz&goo=bob" 3 url "ftp://example.net/~foo!;#bar=baz&goo=bob") | |
46 | ("bzr+ssh://user@example.net:5/a%20d,5" 34 url "bzr+ssh://user@example.net:5/a%20d,5") | |
47 | ;; <url:...> markup | |
48 | ("Url: <url:foo://1.example.com>..." 8 url "foo://1.example.com") | |
49 | ("Url: <url:foo://2.example.com>..." 30 url "foo://2.example.com") | |
50 | ("Url: <url:foo://www.gnu.org/a bc>..." 20 url "foo://www.gnu.org/a bc") | |
51 | ;; Hack used by thing-at-point: drop punctuation at end of URI. | |
52 | ("Go to http://www.gnu.org, for details" 7 url "http://www.gnu.org") | |
53 | ("Go to http://www.gnu.org." 24 url "http://www.gnu.org") | |
54 | ;; Standard URI delimiters | |
55 | ("Go to \"http://10.gnu.org\"." 8 url "http://10.gnu.org") | |
56 | ("Go to \"http://11.gnu.org/\"." 26 url "http://11.gnu.org/") | |
57 | ("Go to <http://12.gnu.org> now." 8 url "http://12.gnu.org") | |
58 | ("Go to <http://13.gnu.org> now." 24 url "http://13.gnu.org") | |
59 | ;; Parenthesis handling (non-standard) | |
60 | ("http://example.com/a(b)c" 21 url "http://example.com/a(b)c") | |
61 | ("http://example.com/a(b)" 21 url "http://example.com/a(b)") | |
62 | ("(http://example.com/abc)" 2 url "http://example.com/abc") | |
63 | ("This (http://example.com/a(b))" 7 url "http://example.com/a(b)") | |
64 | ("This (http://example.com/a(b))" 30 url "http://example.com/a(b)") | |
65 | ("This (http://example.com/a(b))" 5 url nil) | |
66 | ("http://example.com/ab)c" 4 url "http://example.com/ab)c") | |
67 | ;; URL markup, lacking schema | |
68 | ("<url:foo@example.com>" 1 url "mailto:foo@example.com") | |
69 | ("<url:ftp.example.net/abc/>" 1 url "ftp://ftp.example.net/abc/")) | |
70 | "List of thing-at-point tests. | |
71 | Each list element should have the form | |
72 | ||
73 | (STRING POS THING RESULT) | |
74 | ||
75 | where STRING is a string of buffer contents, POS is the value of | |
76 | point, THING is a symbol argument for `thing-at-point', and | |
77 | RESULT should be the result of calling `thing-at-point' from that | |
78 | position to retrieve THING.") | |
79 | ||
80 | (ert-deftest thing-at-point-tests () | |
81 | "Test the file-local variables implementation." | |
82 | (dolist (test thing-at-point-test-data) | |
83 | (with-temp-buffer | |
84 | (insert (nth 0 test)) | |
85 | (goto-char (nth 1 test)) | |
86 | (should (equal (thing-at-point (nth 2 test)) (nth 3 test)))))) | |
87 | ||
88 | ;;; thingatpt.el ends here |