;;; Tests for ac-js2
|
|
|
|
(require 'ert)
|
|
(require 'skewer-mode)
|
|
(require 'js2-mode)
|
|
(require 'ac-js2)
|
|
|
|
;;; Must have a skewer client connected before running the tests
|
|
;; Need to call httpd-stop from main Emacs if running tests in batch mode
|
|
(unless skewer-clients
|
|
(run-skewer))
|
|
|
|
(ert-deftest ac-js2-candidates-test ()
|
|
"Test the major function that returns candidates for all frontends."
|
|
(let (property
|
|
property-dot
|
|
func-call
|
|
var)
|
|
(with-temp-buffer
|
|
(insert "
|
|
var temp = function(param1, param2) {
|
|
var localParam = 15;
|
|
return param1 + param2;
|
|
};
|
|
|
|
var look;
|
|
|
|
temp.aFun = function(lolParam) {};
|
|
temp.anotherFunction = function() { return {about: 3};}")
|
|
(setq ac-js2-evaluate-calls t)
|
|
(setq ac-js2-external-libraries nil)
|
|
|
|
(js2-mode)
|
|
(ac-js2-mode t)
|
|
(js2-parse)
|
|
|
|
(insert "tem")
|
|
(ac-js2-candidates)
|
|
(setq var ac-js2-skewer-candidates)
|
|
(delete-char -3)
|
|
|
|
(insert "temp.")
|
|
(js2-parse)
|
|
(ac-js2-candidates)
|
|
(setq property-dot ac-js2-skewer-candidates)
|
|
(delete-char -5)
|
|
|
|
(insert "temp.aF")
|
|
(js2-parse)
|
|
(ac-js2-candidates)
|
|
(setq property ac-js2-skewer-candidates))
|
|
|
|
(should (assoc 'anotherFunction property-dot))
|
|
(print property)
|
|
(should (assoc 'aFun property))
|
|
(should (assoc 'temp var))))
|
|
|
|
(defmacro completion-frontend-test (test-name completion-function)
|
|
"Utility for testing completion front ends.
|
|
TODO: cover more cases"
|
|
`(ert-deftest ,test-name ()
|
|
(let (var)
|
|
(with-temp-buffer
|
|
(insert "var testComplete = function(param1, param2) {};")
|
|
|
|
(js2-mode)
|
|
(ac-js2-mode t)
|
|
(js2-parse)
|
|
|
|
(insert "testComplet")
|
|
(funcall ',completion-function)
|
|
(setq var (thing-at-point 'word)))
|
|
(should (string= var "testComplete")))))
|
|
|
|
(completion-frontend-test auto-complete-test auto-complete)
|
|
(completion-frontend-test completion-at-point-test completion-at-point)
|