X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/8427b8f1edd77234349930f440b2f03bf519221b..8a23e481449111d0050e0250039ae8a0558807c0:/company-tests.el diff --git a/company-tests.el b/company-tests.el index 30d898bc5..811e4cc2e 100644 --- a/company-tests.el +++ b/company-tests.el @@ -213,6 +213,7 @@ (declare (indent 0)) `(with-temp-buffer (insert ,contents) + (setq major-mode 'emacs-lisp-mode) (re-search-backward "|") (replace-match "") ,@body)) @@ -221,36 +222,40 @@ (company-elisp-with-buffer "(foo ba|)" (should (eq (let ((company-elisp-detect-function-context t)) - (company-elisp-candidates-predicate "ba")) + (company-elisp--candidates-predicate "ba")) 'boundp)) (should (eq (let (company-elisp-detect-function-context) - (company-elisp-candidates-predicate "ba")) - 'company-elisp-predicate))) + (company-elisp--candidates-predicate "ba")) + 'company-elisp--predicate))) (company-elisp-with-buffer "(foo| )" (should (eq (let ((company-elisp-detect-function-context t)) - (company-elisp-candidates-predicate "foo")) + (company-elisp--candidates-predicate "foo")) 'fboundp)) (should (eq (let (company-elisp-detect-function-context) - (company-elisp-candidates-predicate "foo")) - 'company-elisp-predicate))) + (company-elisp--candidates-predicate "foo")) + 'company-elisp--predicate))) (company-elisp-with-buffer "(foo 'b|)" (should (eq (let ((company-elisp-detect-function-context t)) - (company-elisp-candidates-predicate "b")) - 'company-elisp-predicate)))) + (company-elisp--candidates-predicate "b")) + 'company-elisp--predicate)))) -;; Mix it up with an integration test. +;; This one's also an integration test. (ert-deftest company-elisp-candidates-recognizes-binding-form () - (company-elisp-with-buffer - "(let ((foo 7) (wh| )))" - (let ((obarray [when what whelp]) - (what 1) - (whelp 2) - (wisp 3)) + (let ((company-elisp-detect-function-context t) + (obarray [when what whelp]) + (what 1) + (whelp 2) + (wisp 3)) + (company-elisp-with-buffer + "(let ((foo 7) (wh| )))" (should (equal '("what" "whelp") - (let ((company-elisp-detect-function-context t)) - (company-elisp-candidates "wh"))))))) + (company-elisp-candidates "wh")))) + (company-elisp-with-buffer + "(cond ((null nil) (wh| )))" + (should (equal '("when") + (company-elisp-candidates "wh")))))) (ert-deftest company-elisp-finds-vars () (let ((obarray [boo bar baz backquote]) @@ -258,19 +263,99 @@ (bar t) (baz t)) (should (equal '("bar" "baz") - (company-elisp-globals "ba" 'boundp))))) + (company-elisp--globals "ba" 'boundp))))) (ert-deftest company-elisp-finds-functions () (let ((obarray [when what whelp]) (what t) (whelp t)) (should (equal '("when") - (company-elisp-globals "wh" 'fboundp))))) + (company-elisp--globals "wh" 'fboundp))))) (ert-deftest company-elisp-finds-things () (let ((obarray [when what whelp]) (what t) (whelp t)) (should (equal '("what" "whelp" "when") - (sort (company-elisp-globals "wh" 'company-elisp-predicate) + (sort (company-elisp--globals "wh" 'company-elisp--predicate) 'string<))))) + +(ert-deftest company-elisp-locals-vars () + (company-elisp-with-buffer + "(let ((foo 5) (bar 6)) + (cl-labels ((borg ())) + (lambda (boo baz) + b|)))" + (should (equal '("bar" "baz" "boo") + (company-elisp--locals "b" nil))))) + +(ert-deftest company-elisp-locals-single-var () + (company-elisp-with-buffer + "(dotimes (itk 100) + (dolist (item items) + it|))" + (should (equal '("itk" "item") + (company-elisp--locals "it" nil))))) + +(ert-deftest company-elisp-locals-funs () + (company-elisp-with-buffer + "(cl-labels ((foo ()) + (fee ())) + (let ((fun 4)) + (f| )))" + (should (equal '("fee" "foo") + (sort (company-elisp--locals "f" t) 'string<))))) + +(ert-deftest company-elisp-locals-skips-current-varlist () + (company-elisp-with-buffer + "(let ((foo 1) + (f| )))" + (should (null (company-elisp--locals "f" nil))))) + +(ert-deftest company-elisp-show-locals-first () + (company-elisp-with-buffer + "(let ((floo 1) + (flop 2) + (flee 3)) + fl|)" + (let ((obarray [float-pi])) + (let (company-elisp-show-locals-first) + (should (eq nil (company-elisp 'sorted)))) + (let ((company-elisp-show-locals-first t)) + (should (eq t (company-elisp 'sorted))) + (should (equal '("flee" "floo" "flop" "float-pi") + (company-elisp-candidates "fl"))))))) + +(ert-deftest company-elisp-candidates-no-duplicates () + (company-elisp-with-buffer + "(let ((float-pi 4)) + f|)" + (let ((obarray [float-pi]) + (company-elisp-show-locals-first t)) + (should (equal '("float-pi") (company-elisp-candidates "f")))))) + +(ert-deftest company-elisp-shouldnt-complete-defun-name () + (company-elisp-with-buffer + "(defun foob|)" + (should (null (company-elisp 'prefix))))) + +(ert-deftest company-elisp-should-complete-def-call () + (company-elisp-with-buffer + "(defu|" + (should (equal "defu" (company-elisp 'prefix))))) + +(ert-deftest company-elisp-should-complete-in-defvar () + ;; It will also complete the var name, at least for now. + (company-elisp-with-buffer + "(defvar abc de|" + (should (equal "de" (company-elisp 'prefix))))) + +(ert-deftest company-elisp-shouldnt-complete-in-defun-arglist () + (company-elisp-with-buffer + "(defsubst foobar (ba|" + (should (null (company-elisp 'prefix))))) + +(ert-deftest company-elisp-prefix-in-defun-body () + (company-elisp-with-buffer + "(defun foob ()|)" + (should (equal "" (company-elisp 'prefix)))))