lisp/obsolete/*tls.el: Note when obsolescence was decided
[emacs.git] / test / lisp / minibuffer-tests.el
blobbfacd6bc70ce46305d1bf17ea8c54066e02f37d0
1 ;;; completion-tests.el --- Tests for completion functions -*- lexical-binding: t; -*-
3 ;; Copyright (C) 2013-2018 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 <https://www.gnu.org/licenses/>.
21 ;;; Commentary:
25 ;;; Code:
27 (eval-when-compile (require 'cl-lib))
29 (ert-deftest completion-test1 ()
30 (with-temp-buffer
31 (cl-flet* ((test/completion-table (_string _pred action)
32 (if (eq action 'lambda)
33 nil
34 "test: "))
35 (test/completion-at-point ()
36 (list (copy-marker (point-min))
37 (copy-marker (point))
38 #'test/completion-table)))
39 (let ((completion-at-point-functions (list #'test/completion-at-point)))
40 (insert "TEST")
41 (completion-at-point)
42 (should (equal (buffer-string)
43 "test: "))))))
45 (ert-deftest completion-table-with-predicate-test ()
46 (let ((full-collection
47 '("apple" ; Has A.
48 "beet" ; Has B.
49 "banana" ; Has A & B.
50 "cherry" ; Has neither.
52 (no-A (lambda (x) (not (string-match-p "a" x))))
53 (no-B (lambda (x) (not (string-match-p "b" x)))))
54 (should
55 (member "cherry"
56 (completion-table-with-predicate
57 full-collection no-A t "" no-B t)))
58 (should-not
59 (member "banana"
60 (completion-table-with-predicate
61 full-collection no-A t "" no-B t)))
62 ;; "apple" should still match when strict is nil.
63 (should (eq t (try-completion
64 "apple"
65 (apply-partially
66 'completion-table-with-predicate
67 full-collection no-A nil)
68 no-B)))
69 ;; "apple" should still match when strict is nil and pred2 is nil
70 ;; (Bug#27841).
71 (should (eq t (try-completion
72 "apple"
73 (apply-partially
74 'completion-table-with-predicate
75 full-collection no-A nil))))))
77 (provide 'completion-tests)
78 ;;; completion-tests.el ends here