X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/eba32647fcbc74480d8955cd26381e3bdc7cf96d..900ae0d7a2270ea1d2ea00567e80a619333fd4e5:/company-tests.el diff --git a/company-tests.el b/company-tests.el index fd89b58ec..f0d669d11 100644 --- a/company-tests.el +++ b/company-tests.el @@ -1,8 +1,8 @@ -;;; company-tests.el --- company-mode tests +;;; company-tests.el --- company-mode test helpers -*- lexical-binding: t -*- -;; Copyright (C) 2011, 2013 Free Software Foundation, Inc. +;; Copyright (C) 2011, 2013-2014 Free Software Foundation, Inc. -;; Author: Nikolaj Schumacher +;; Author: Dmitry Gutov ;; This file is part of GNU Emacs. @@ -19,98 +19,18 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . - -;;; Commentary: -;; - -;;; Code: - -(require 'ert) (require 'company) -(require 'company-keywords) - -(ert-deftest company-sorted-keywords () - "Test that keywords in `company-keywords-alist' are in alphabetical order." - (dolist (pair company-keywords-alist) - (when (consp (cdr pair)) - (let ((prev (cadr pair))) - (dolist (next (cddr pair)) - (should (not (equal prev next))) - (should (string< prev next)) - (setq prev next)))))) - -(ert-deftest company-good-prefix () - (let ((company-minimum-prefix-length 5) - company--explicit-action) - (should (eq t (company--good-prefix-p "!@#$%"))) - (should (eq nil (company--good-prefix-p "abcd"))) - (should (eq nil (company--good-prefix-p 'stop))) - (should (eq t (company--good-prefix-p '("foo" . 5)))) - (should (eq nil (company--good-prefix-p '("foo" . 4)))))) - -(ert-deftest company-multi-backend-with-lambdas () - (let ((company-backend - (list (lambda (command &optional arg &rest ignore) - (case command - (prefix "z") - (candidates '("a" "b")))) - (lambda (command &optional arg &rest ignore) - (case command - (prefix "z") - (candidates '("c" "d"))))))) - (should (equal (company-call-backend 'candidates "z") '("a" "b" "c" "d"))))) -(ert-deftest company-begin-backend-failure-doesnt-break-company-backends () - (with-temp-buffer - (insert "a") - (company-mode) - (should-error - (company-begin-backend (lambda (command &rest ignore)))) - (let (company-frontends - (company-backends - (list (lambda (command &optional arg) - (case command - (prefix "a") - (candidates '("a" "ab" "ac"))))))) - (let (this-command) - (company-complete)) - (company-post-command) - (should (eq 3 company-candidates-length))))) +(defun company--column (&optional pos) + (car (company--col-row pos))) -(ert-deftest company-require-match-explicit () - (with-temp-buffer - (insert "ab") - (company-mode) - (let (company-frontends - (company-require-match 'company-explicit-action-p) - (company-backends - (list (lambda (command &optional arg) - (case command - (prefix (buffer-substring (point-min) (point))) - (candidates '("abc" "abd"))))))) - (let (this-command) - (company-complete)) - (let ((last-command-event ?e)) - (self-insert-command 1)) - (company-post-command) - (should (eq 2 company-candidates-length)) - (should (eq 3 (point)))))) +(defun company-call (name &rest args) + (let* ((maybe (intern (format "company-%s" name))) + (command (if (fboundp maybe) maybe name))) + (let ((this-command command)) + (run-hooks 'pre-command-hook)) + (apply command args) + (let ((this-command command)) + (run-hooks 'post-command-hook)))) -(ert-deftest company-dont-require-match-idle () - (with-temp-buffer - (insert "ab") - (company-mode) - (let (company-frontends - (company-require-match 'company-explicit-action-p) - (company-backends - (list (lambda (command &optional arg) - (case command - (prefix (buffer-substring (point-min) (point))) - (candidates '("abc" "abd"))))))) - (company-idle-begin (current-buffer) (selected-window) - (buffer-chars-modified-tick) (point)) - (let ((last-command-event ?e)) - (self-insert-command 1)) - (company-post-command) - (should (eq nil company-candidates-length)) - (should (eq 4 (point)))))) +(provide 'company-tests)