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>
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/>.
27 (eval-when-compile (require 'cl-lib
))
29 (ert-deftest completion-test1
()
31 (cl-flet* ((test/completion-table
(_string _pred action
)
32 (if (eq action
'lambda
)
35 (test/completion-at-point
()
36 (list (copy-marker (point-min))
38 #'test
/completion-table
)))
39 (let ((completion-at-point-functions (list #'test
/completion-at-point
)))
42 (should (equal (buffer-string)
45 (ert-deftest completion-table-with-predicate-test
()
46 (let ((full-collection
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
)))))
56 (completion-table-with-predicate
57 full-collection no-A t
"" no-B t
)))
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
66 'completion-table-with-predicate
67 full-collection no-A nil
)
69 ;; "apple" should still match when strict is nil and pred2 is nil
71 (should (eq t
(try-completion
74 'completion-table-with-predicate
75 full-collection no-A nil
))))))
77 (provide 'completion-tests
)
78 ;;; completion-tests.el ends here