;; -*- lexical-binding: t; -*- (require 'phpinspect-resolvecontext) (require 'phpinspect) (require 'phpinspect-test-env (expand-file-name "phpinspect-test-env.el" (file-name-directory (macroexp-file-name)))) (ert-deftest phinspect-get-resolvecontext () (let* ((ctx (phpinspect-make-pctx :incremental t :bmap (phpinspect-make-bmap))) (code " class TestClass { public function getCurrentStatisticAction(): JsonResponse { $statistic = $this->repository->getCurrentStatistic(); if (!$this->authorization->isGranted(EntityAction::VIEW, $statistic)) { return $this->responder->respondUnauthorized(); } $this-> return $this->responder->respond($statistic); } }") (bmap)) (phpinspect-with-parse-context ctx (phpinspect-parse-string code)) (setq bmap (phpinspect-pctx-bmap ctx)) (let ((rctx (phpinspect-get-resolvecontext bmap 317))) (should (phpinspect--resolvecontext-subject rctx)) (should (phpinspect--resolvecontext-enclosing-tokens rctx))))) (ert-deftest phpinspect-type-resolver-for-resolvecontext () (with-temp-buffer (insert-file-contents (expand-file-name "IncompleteClass.php" phpinspect-test-php-file-directory)) (let* ((bmap (phpinspect-parse-string-to-bmap (buffer-string))) (resolvecontext (phpinspect-get-resolvecontext bmap (point-max))) (type-resolver (phpinspect--make-type-resolver-for-resolvecontext resolvecontext))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "\\array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Symfony\\Component\\HttpFoundation\\Response") (funcall type-resolver (phpinspect--make-type :name "Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Response") (funcall type-resolver (phpinspect--make-type :name "\\Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "GastonLagaffe")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\Dupuis\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "Dupuis\\GastonLagaffe"))))))) (ert-deftest phpinspect-type-resolver-for-resolvecontext-namespace-block () (with-temp-buffer (insert-file-contents (concat phpinspect-test-php-file-directory "/IncompleteClassBlockedNamespace.php")) (let* ((bmap (phpinspect-parse-string-to-bmap (buffer-string))) (resolvecontext (phpinspect-get-resolvecontext bmap (point-max))) (type-resolver (phpinspect--make-type-resolver-for-resolvecontext resolvecontext))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "\\array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Symfony\\Component\\HttpFoundation\\Response") (funcall type-resolver (phpinspect--make-type :name "Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Response") (funcall type-resolver (phpinspect--make-type :name "\\Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "GastonLagaffe")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\Dupuis\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "Dupuis\\GastonLagaffe"))))))) (ert-deftest phpinspect-type-resolver-for-resolvecontext-multiple-namespace-blocks () (let* ((resolvecontext (phpinspect--get-resolvecontext (phpinspect-test-read-fixture-data "IncompleteClassMultipleNamespaces"))) (type-resolver (phpinspect--make-type-resolver-for-resolvecontext resolvecontext))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\array") (funcall type-resolver (phpinspect--make-type :name "\\array")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Symfony\\Component\\HttpFoundation\\Response") (funcall type-resolver (phpinspect--make-type :name "Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\Response") (funcall type-resolver (phpinspect--make-type :name "\\Response")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "GastonLagaffe")))) (should (phpinspect--type= (phpinspect--make-type :name "\\App\\Controller\\Dupuis\\GastonLagaffe") (funcall type-resolver (phpinspect--make-type :name "Dupuis\\GastonLagaffe"))))))