Convert some completion.el tests to ERT
* test/lisp/completion-tests.el: New file. * lisp/completion.el: Move commented out tests to completion-tests.el.
This commit is contained in:
parent
610b771d4a
commit
37a2a427e4
2 changed files with 170 additions and 121 deletions
|
@ -399,13 +399,6 @@ Used to decide whether to save completions.")
|
|||
:up)
|
||||
(t :neither))))))
|
||||
|
||||
;; Tests -
|
||||
;; (cmpl-string-case-type "123ABCDEF456") --> :up
|
||||
;; (cmpl-string-case-type "123abcdef456") --> :down
|
||||
;; (cmpl-string-case-type "123aBcDeF456") --> :mixed
|
||||
;; (cmpl-string-case-type "123456") --> :neither
|
||||
;; (cmpl-string-case-type "Abcde123") --> :capitalized
|
||||
|
||||
(defun cmpl-coerce-string-case (string case-type)
|
||||
(cond ((eq case-type :down) (downcase string))
|
||||
((eq case-type :up) (upcase string))
|
||||
|
@ -424,12 +417,6 @@ Used to decide whether to save completions.")
|
|||
;; as is
|
||||
string-to-coerce))))
|
||||
|
||||
;; Tests -
|
||||
;; (cmpl-merge-string-cases "AbCdEf456" "abc") --> AbCdEf456
|
||||
;; (cmpl-merge-string-cases "abcdef456" "ABC") --> ABCDEF456
|
||||
;; (cmpl-merge-string-cases "ABCDEF456" "Abc") --> Abcdef456
|
||||
;; (cmpl-merge-string-cases "ABCDEF456" "abc") --> abcdef456
|
||||
|
||||
|
||||
(defun cmpl-hours-since-origin ()
|
||||
(floor (time-convert nil 'integer) 3600))
|
||||
|
@ -1226,45 +1213,6 @@ String must be longer than `completion-prefix-min-length'."
|
|||
(set cmpl-db-prefix-symbol nil)))))
|
||||
(error "Unknown completion `%s'" completion-string))))
|
||||
|
||||
;; Tests --
|
||||
;; - Add and Find -
|
||||
;; (add-completion-to-head "banana") --> ("banana" 0 nil 0)
|
||||
;; (find-exact-completion "banana") --> ("banana" 0 nil 0)
|
||||
;; (find-exact-completion "bana") --> nil
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banana" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banana" ...))
|
||||
;; (add-completion-to-head "banish") --> ("banish" 0 nil 0)
|
||||
;; (find-exact-completion "banish") --> ("banish" 0 nil 0)
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banish" ...) ("banana" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banana" ...))
|
||||
;; (add-completion-to-head "banana") --> ("banana" 0 nil 0)
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banana" ...) ("banish" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banish" ...))
|
||||
;;
|
||||
;; - Deleting -
|
||||
;; (add-completion-to-head "banner") --> ("banner" 0 nil 0)
|
||||
;; (delete-completion "banner")
|
||||
;; (find-exact-completion "banner") --> nil
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banana" ...) ("banish" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banish" ...))
|
||||
;; (add-completion-to-head "banner") --> ("banner" 0 nil 0)
|
||||
;; (delete-completion "banana")
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banner" ...) ("banish" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banish" ...))
|
||||
;; (delete-completion "banner")
|
||||
;; (delete-completion "banish")
|
||||
;; (find-cmpl-prefix-entry "ban") --> nil
|
||||
;; (delete-completion "banner") --> error
|
||||
;;
|
||||
;; - Tail -
|
||||
;; (add-completion-to-tail-if-new "banana") --> ("banana" 0 nil 0)
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banana" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) --> (("banana" ...))
|
||||
;; (add-completion-to-tail-if-new "banish") --> ("banish" 0 nil 0)
|
||||
;; (car (find-cmpl-prefix-entry "ban")) -->(("banana" ...) ("banish" ...))
|
||||
;; (cdr (find-cmpl-prefix-entry "ban")) -->(("banish" ...))
|
||||
;;
|
||||
|
||||
|
||||
;;---------------------------------------------------------------------------
|
||||
;; Database Update :: Interface level routines
|
||||
|
@ -1361,29 +1309,6 @@ Completions added this way will automatically be saved if
|
|||
(set-completion-num-uses entry 1)
|
||||
(setq cmpl-completions-accepted-p t)))))))
|
||||
|
||||
;; Tests --
|
||||
;; - Add and Find -
|
||||
;; (add-completion "banana" 5 10)
|
||||
;; (find-exact-completion "banana") --> ("banana" 5 10 0)
|
||||
;; (add-completion "banana" 6)
|
||||
;; (find-exact-completion "banana") --> ("banana" 6 10 0)
|
||||
;; (add-completion "banish")
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banish" ...) ("banana" ...))
|
||||
;;
|
||||
;; - Accepting -
|
||||
;; (setq completion-to-accept "banana")
|
||||
;; (accept-completion)
|
||||
;; (find-exact-completion "banana") --> ("banana" 7 10)
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banana" ...) ("banish" ...))
|
||||
;; (setq completion-to-accept "banish")
|
||||
;; (add-completion "banner")
|
||||
;; (car (find-cmpl-prefix-entry "ban"))
|
||||
;; --> (("banner" ...) ("banish" 1 ...) ("banana" 7 ...))
|
||||
;;
|
||||
;; - Deleting -
|
||||
;; (kill-completion "banish")
|
||||
;; (car (find-cmpl-prefix-entry "ban")) --> (("banner" ...) ("banana" ...))
|
||||
|
||||
|
||||
;;---------------------------------------------------------------------------
|
||||
;; Searching the database
|
||||
|
@ -1505,46 +1430,6 @@ If there are no more entries, try cdabbrev and then return only a string."
|
|||
;; Completely unsuccessful, return nil
|
||||
))
|
||||
|
||||
;; Tests --
|
||||
;; - Add and Find -
|
||||
;; (add-completion "banana")
|
||||
;; (completion-search-reset "ban")
|
||||
;; (completion-search-next 0) --> "banana"
|
||||
;;
|
||||
;; - Discrimination -
|
||||
;; (add-completion "cumberland")
|
||||
;; (add-completion "cumberbund")
|
||||
;; cumbering
|
||||
;; (completion-search-reset "cumb")
|
||||
;; (completion-search-peek t) --> "cumberbund"
|
||||
;; (completion-search-next 0) --> "cumberbund"
|
||||
;; (completion-search-peek t) --> "cumberland"
|
||||
;; (completion-search-next 1) --> "cumberland"
|
||||
;; (completion-search-peek nil) --> nil
|
||||
;; (completion-search-next 2) --> "cumbering" {cdabbrev}
|
||||
;; (completion-search-next 3) --> nil or "cumming"{depends on context}
|
||||
;; (completion-search-next 1) --> "cumberland"
|
||||
;; (completion-search-peek t) --> "cumbering" {cdabbrev}
|
||||
;;
|
||||
;; - Accepting -
|
||||
;; (completion-search-next 1) --> "cumberland"
|
||||
;; (setq completion-to-accept "cumberland")
|
||||
;; (completion-search-reset "foo")
|
||||
;; (completion-search-reset "cum")
|
||||
;; (completion-search-next 0) --> "cumberland"
|
||||
;;
|
||||
;; - Deleting -
|
||||
;; (kill-completion "cumberland")
|
||||
;; cummings
|
||||
;; (completion-search-reset "cum")
|
||||
;; (completion-search-next 0) --> "cumberbund"
|
||||
;; (completion-search-next 1) --> "cummings"
|
||||
;;
|
||||
;; - Ignoring Capitalization -
|
||||
;; (completion-search-reset "CuMb")
|
||||
;; (completion-search-next 0) --> "cumberbund"
|
||||
|
||||
|
||||
|
||||
;;-----------------------------------------------
|
||||
;; COMPLETE
|
||||
|
@ -1733,12 +1618,6 @@ Prefix args ::
|
|||
"\n(\\(\\w*:\\)?def\\(\\w\\|\\s_\\)*\\s +(*"
|
||||
"A regexp that searches for Lisp definition form.")
|
||||
|
||||
;; Tests -
|
||||
;; (and (string-match *lisp-def-regexp* "\n(defun foo") (match-end 0)) -> 8
|
||||
;; (and (string-match *lisp-def-regexp* "\n(si:def foo") (match-end 0)) -> 9
|
||||
;; (and (string-match *lisp-def-regexp* "\n(def-bar foo")(match-end 0)) -> 10
|
||||
;; (and (string-match *lisp-def-regexp* "\n(defun (foo") (match-end 0)) -> 9
|
||||
|
||||
;; Parses all the definition names from a Lisp mode buffer and adds them to
|
||||
;; the completion database.
|
||||
(defun add-completions-from-lisp-buffer ()
|
||||
|
|
170
test/lisp/completion-tests.el
Normal file
170
test/lisp/completion-tests.el
Normal file
|
@ -0,0 +1,170 @@
|
|||
;;; completion-tests.el --- Tests for completion.el -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright (C) 2020 Free Software Foundation, Inc.
|
||||
|
||||
;; This file is part of GNU Emacs.
|
||||
|
||||
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'ert)
|
||||
(require 'completion)
|
||||
|
||||
(ert-deftest completion-test-cmpl-string-case-type ()
|
||||
(should (eq (cmpl-string-case-type "123ABCDEF456") :up))
|
||||
(should (eq (cmpl-string-case-type "123abcdef456") :down))
|
||||
(should (eq (cmpl-string-case-type "123aBcDeF456") :mixed))
|
||||
(should (eq (cmpl-string-case-type "123456") :neither))
|
||||
(should (eq (cmpl-string-case-type "Abcde123") :capitalized)))
|
||||
|
||||
(ert-deftest completion-test-cmpl-merge-string-cases ()
|
||||
(should (equal (cmpl-merge-string-cases "AbCdEf456" "abc") "AbCdEf456"))
|
||||
(should (equal (cmpl-merge-string-cases "abcdef456" "ABC") "ABCDEF456"))
|
||||
(should (equal (cmpl-merge-string-cases "ABCDEF456" "Abc") "Abcdef456"))
|
||||
(should (equal (cmpl-merge-string-cases "ABCDEF456" "abc") "abcdef456")))
|
||||
|
||||
(ert-deftest completion-test-add-find-delete-tail ()
|
||||
(unwind-protect
|
||||
(progn
|
||||
;; - Add and Find -
|
||||
(should (equal (add-completion-to-head "banana") '("banana" 0 nil 0)))
|
||||
(should (equal (find-exact-completion "banana") '("banana" 0 nil 0)))
|
||||
(should (equal (find-exact-completion "bana") nil))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0))))
|
||||
|
||||
(should (equal (add-completion-to-head "banish") '("banish" 0 nil 0)))
|
||||
(should (equal (find-exact-completion "banish") '("banish" 0 nil 0)))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0) ("banana" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0))))
|
||||
|
||||
(should (equal (add-completion-to-head "banana") '("banana" 0 nil 0)))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0) ("banish" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0))))
|
||||
|
||||
;; - Deleting -
|
||||
(should (equal (add-completion-to-head "banner") '("banner" 0 nil 0)))
|
||||
(delete-completion "banner")
|
||||
(should-not (find-exact-completion "banner"))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0) ("banish" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0))))
|
||||
(should (equal (add-completion-to-head "banner") '("banner" 0 nil 0)))
|
||||
(delete-completion "banana")
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banner" 0 nil 0) ("banish" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0))))
|
||||
(delete-completion "banner")
|
||||
(delete-completion "banish")
|
||||
(should-not (find-cmpl-prefix-entry "ban"))
|
||||
(should-error (delete-completion "banner"))
|
||||
|
||||
;; - Tail -
|
||||
(should (equal (add-completion-to-tail-if-new "banana") '("banana" 0 nil 0)))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0))))
|
||||
(add-completion-to-tail-if-new "banish") '("banish" 0 nil 0)
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 0 nil 0) ("banish" 0 nil 0))))
|
||||
(should (equal (cdr (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0)))))
|
||||
(ignore-errors (kill-completion "banana"))
|
||||
(ignore-errors (kill-completion "banner"))
|
||||
(ignore-errors (kill-completion "banish"))))
|
||||
|
||||
(ert-deftest completion-test-add-find-accept-delete ()
|
||||
(unwind-protect
|
||||
(progn
|
||||
;; - Add and Find -
|
||||
(add-completion "banana" 5 10)
|
||||
(should (equal (find-exact-completion "banana") '("banana" 5 10 0)))
|
||||
(add-completion "banana" 6)
|
||||
(should (equal (find-exact-completion "banana") '("banana" 6 10 0)))
|
||||
(add-completion "banish")
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banish" 0 nil 0) ("banana" 6 10 0))))
|
||||
|
||||
;; - Accepting -
|
||||
(setq completion-to-accept "banana")
|
||||
(accept-completion)
|
||||
(should (equal (find-exact-completion "banana") '("banana" 7 10 0)))
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banana" 7 10 0) ("banish" 0 nil 0))))
|
||||
(setq completion-to-accept "banish")
|
||||
(add-completion "banner")
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban"))
|
||||
'(("banner" 0 nil 0) ("banish" 1 nil 0) ("banana" 7 10 0))))
|
||||
|
||||
;; - Deleting -
|
||||
(kill-completion "banish")
|
||||
(should (equal (car (find-cmpl-prefix-entry "ban")) '(("banner" 0 nil 0) ("banana" 7 10 0)))))
|
||||
(ignore-errors (kill-completion "banish"))
|
||||
(ignore-errors (kill-completion "banana"))
|
||||
(ignore-errors (kill-completion "banner"))))
|
||||
|
||||
(ert-deftest completion-test-search ()
|
||||
(unwind-protect
|
||||
(progn
|
||||
;; - Add and Find -
|
||||
(add-completion "banana")
|
||||
(completion-search-reset "ban")
|
||||
(should (equal (car (completion-search-next 0)) "banana"))
|
||||
|
||||
;; - Discrimination -
|
||||
(add-completion "cumberland")
|
||||
(add-completion "cumberbund")
|
||||
;; cumbering
|
||||
(completion-search-reset "cumb")
|
||||
(should (equal (car (completion-search-peek t)) "cumberbund"))
|
||||
(should (equal (car (completion-search-next 0)) "cumberbund"))
|
||||
(should (equal (car (completion-search-peek t)) "cumberland"))
|
||||
(should (equal (car (completion-search-next 1)) "cumberland"))
|
||||
(should-not (completion-search-peek nil))
|
||||
|
||||
;; FIXME
|
||||
;; (should (equal (completion-search-next 2) "cumbering")) ; {cdabbrev}
|
||||
;;(completion-search-next 3) --> nil or "cumming" {depends on context}
|
||||
|
||||
(should (equal (car (completion-search-next 1)) "cumberland"))
|
||||
|
||||
;; FIXME
|
||||
;; (should (equal (completion-search-peek t) "cumbering")) ; {cdabbrev}
|
||||
|
||||
;; - Accepting -
|
||||
(should (equal (car (completion-search-next 1)) "cumberland"))
|
||||
(setq completion-to-accept "cumberland")
|
||||
(completion-search-reset "foo")
|
||||
(completion-search-reset "cum")
|
||||
(should (equal (car (completion-search-next 0)) "cumberland"))
|
||||
|
||||
;; - Deleting -
|
||||
(kill-completion "cumberland")
|
||||
(add-completion "cummings")
|
||||
(completion-search-reset "cum")
|
||||
(should (equal (car (completion-search-next 0)) "cummings"))
|
||||
(should (equal (car (completion-search-next 1)) "cumberbund"))
|
||||
|
||||
;; - Ignoring Capitalization -
|
||||
(completion-search-reset "CuMb")
|
||||
(should (equal (car (completion-search-next 0)) "cumberbund")))
|
||||
(ignore-errors (kill-completion "banana"))
|
||||
(ignore-errors (kill-completion "cumberland"))
|
||||
(ignore-errors (kill-completion "cumberbund"))
|
||||
(ignore-errors (kill-completion "cummings"))))
|
||||
|
||||
(ert-deftest completion-test-lisp-def-regexp ()
|
||||
(should (= (and (string-match *lisp-def-regexp* "\n(defun foo") (match-end 0)) 8))
|
||||
(should (= (and (string-match *lisp-def-regexp* "\n(si:def foo") (match-end 0)) 9))
|
||||
(should (= (and (string-match *lisp-def-regexp* "\n(def-bar foo")(match-end 0)) 10))
|
||||
(should (= (and (string-match *lisp-def-regexp* "\n(defun (foo") (match-end 0)) 9)))
|
||||
|
||||
(provide 'completion-tests)
|
||||
;;; completion-tests.el ends here
|
Loading…
Add table
Reference in a new issue