annotate tests/automated/tag-tests.el @ 5634:2014ff433daf

Support hash COLLECTIONs, #'{all,try}-completion{s,}; add #'test-completion src/ChangeLog addition: 2012-01-01 Aidan Kehoe <kehoea@parhasard.net> Add #'test-completion, API from GNU. Accept hash table COLLECTIONs in it and in the other completion-oriented functions, #'try-completion, #'all-completions, and those Lisp functions implemented in terms of them. * lisp.h: Update the prototype of map_obarray(), making FN compatible with the FUNCTION argument of elisp_maphash(); * abbrev.c (abbrev_match_mapper): * abbrev.c (record_symbol): * doc.c (verify_doc_mapper): * symbols.c (mapatoms_1): * symbols.c (apropos_mapper): Update these mapper functions to reflect the new argument to map_obarray(). * symbols.c (map_obarray): Call FN with two arguments, the string name of the symbol, and the symbol itself, for API (mapper) compatibility with elisp_maphash(). * minibuf.c (map_completion): New. Map a maphash_function_t across a non function COLLECTION, as appropriate for #'try-completion and friends. * minibuf.c (map_completion_list): New. Map a maphash_function_t across a pseudo-alist, as appropriate for the completion functions. * minibuf.c (ignore_completion_p): PRED needs to be called with two args if and only if the collection is a hash table. Implement this. * minibuf.c (try_completion_mapper): New. The loop body of #'try-completion, refactored out. * minibuf.c (Ftry_completion): Use try_completion_mapper(), map_completion(). * minibuf.c (all_completions_mapper): New. The loop body of #'all-completions, refactored out. * minibuf.c (Fall_completions): Use all_completions_mapper(), map_completion(). * minibuf.c (test_completion_mapper): New. The loop body of #'test-completion. * minibuf.c (Ftest_completion): New, API from GNU. * minibuf.c (syms_of_minibuf): Make Ftest_completion available. tests/ChangeLog addition: 2012-01-01 Aidan Kehoe <kehoea@parhasard.net> * automated/completion-tests.el: New. Test #'try-completion, #'all-completion and #'test-completion with list, vector and hash-table COLLECTION arguments.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 01 Jan 2012 15:18:52 +0000
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
1 ;; Copyright (C) 2004 Vin Shelton
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
2
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
3 ;; Author: Vin Shelton <acs@xemacs.org>
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
4 ;; Maintainer: Vin Shelton <acs@xemacs.org>
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
5 ;; Created: 2004
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
6 ;; Keywords: tests
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
7
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
8 ;; This file is part of XEmacs.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
9
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
10 ;; XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
11 ;; under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
12 ;; Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
13 ;; option) any later version.
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
14
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
15 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
16 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
17 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
18 ;; for more details.
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
19
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 5136
diff changeset
21 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>.
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
22
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
23 ;;; Synched up with: Not in FSF.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
24
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
25 ;;; Commentary:
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
26
2073
65dae79be48b [xemacs-hg @ 2004-05-12 06:16:14 by stephent]
stephent
parents: 2071
diff changeset
27 ;; Test tag support.
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
28 ;; See test-harness.el for instructions on how to run these tests.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
29
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
30 (let ((testfile "tag-test.c")
2073
65dae79be48b [xemacs-hg @ 2004-05-12 06:16:14 by stephent]
stephent
parents: 2071
diff changeset
31 (tagfile "TAGS")
65dae79be48b [xemacs-hg @ 2004-05-12 06:16:14 by stephent]
stephent
parents: 2071
diff changeset
32 (tags-build-completion-table nil))
65dae79be48b [xemacs-hg @ 2004-05-12 06:16:14 by stephent]
stephent
parents: 2071
diff changeset
33
65dae79be48b [xemacs-hg @ 2004-05-12 06:16:14 by stephent]
stephent
parents: 2071
diff changeset
34 (cd (temp-directory))
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
35
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
36 ;; Create a TAGS file
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
37 (with-temp-file tagfile
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
38 (insert
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
39 "
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
40 tag-test.c,99
2076
58228a446857 [xemacs-hg @ 2004-05-13 16:41:23 by stephent]
stephent
parents: 2073
diff changeset
41 struct mystruct mystruct2,1
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
42 struct mystruct *foo\(4,23
2076
58228a446857 [xemacs-hg @ 2004-05-13 16:41:23 by stephent]
stephent
parents: 2073
diff changeset
43 DEFUN \(\"require\", Frequire,require,7,51
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
44 "))
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
45
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
46 ;; Create the test file
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
47 (with-temp-file testfile
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
48 (insert
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
49 "
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
50 struct mystruct { };
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
51
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
52 struct mystruct *foo\(\) {
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
53 }
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
54
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
55 DEFUN \(\"require\", Frequire, 1, 2, 0, /*
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
56 If feature FEATURE is not loaded, load it from FILENAME.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
57 If FEATURE is not a member of the list `features', then the feature
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
58 is not loaded; so load the file FILENAME.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
59 If FILENAME is omitted, the printname of FEATURE is used as the file name.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
60 */
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
61 \(feature, filename\)\)
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
62 {
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
63 }
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
64 "))
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
65
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
66 (let ((tags-always-exact t))
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
67
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
68 ;; Search for the tag "mystruct"; this should succeed
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
69 (Silence-Message
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
70 (find-tag "mystruct"))
5136
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
71 (Assert (eq (point) 2))
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
72
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
73 ;; Search again. The search should fail, based on the patch that
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
74 ;; Sven Grundmann submitted for 21.4.16.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
75 (Check-Error-Message error "No more entries matching mystruct"
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
76 (Silence-Message
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
77 (tags-loop-continue))))
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
78
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
79 (let ((tags-always-exact nil))
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
80
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
81 ;; Search for the definition of "require". Until the etags.el upgrade
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
82 ;; from 21.5 in 21.4.16, this test would fail.
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
83 (condition-case nil
3472
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
84 (Silence-Message
43b4a54fbf66 [xemacs-hg @ 2006-06-24 14:30:36 by stephent]
stephent
parents: 2076
diff changeset
85 (find-tag "require"))
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
86 (t t))
5136
0f66906b6e37 Undo Assert-equal, Assert=, etc.; make `Assert' handle this automatically
Ben Wing <ben@xemacs.org>
parents: 4855
diff changeset
87 (Assert (eq (point) 52)))
2071
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
88
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
89 (kill-buffer testfile)
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
90 (delete-file testfile)
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
91 (kill-buffer tagfile)
0f60caa73962 [xemacs-hg @ 2004-05-11 11:33:08 by stephent]
stephent
parents:
diff changeset
92 (delete-file tagfile))