;;; tests/navigation.el --- Some tests for js2-mode.
-;; Copyright (C) 2009, 2011-2013 Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011-2015 Free Software Foundation, Inc.
;; This file is part of GNU Emacs.
(require 'ert)
(require 'js2-mode)
-(cl-defun js2-navigation-helper (buffer-content expected-point &optional (point-offset 1))
+(cl-defun js2-navigation-helper (buffer-content &optional expected-point (point-offset 1))
(with-temp-buffer
(insert buffer-content)
- (js2-mode)
- (goto-char (or (- (point) point-offset)))
- (js2-jump-to-definition)
- (should (= (point) expected-point))))
+ (let ((start-point (or (- (point) point-offset))))
+ (js2-mode)
+ (goto-char start-point)
+ (ignore-errors (js2-jump-to-definition))
+ (print (format "%d %d" (point) start-point))
+ (should (= (point) (or expected-point start-point))))))
(ert-deftest js2-jump-to-var ()
(js2-navigation-helper "var soup = 2; soup" 5))
(ert-deftest js2-jump-to-object-property ()
(js2-navigation-helper "var aObject = {prop1: 3, prop2: \"hello\"}; aObject.prop1" 16))
+
+(ert-deftest js2-no-jump-to-object-property ()
+ (js2-navigation-helper "var aObject = {prop1: 3, prop2: \"hello\"}; anotherObject.prop1"))
+
+(ert-deftest js2-jump-to-nested-property ()
+ (js2-navigation-helper "var aObject = {prop1: {prop2: { prop3: 4}}}; aObject.prop1.prop2.prop3" 33))
+
+(ert-deftest js2-jump-to-object ()
+ (js2-navigation-helper "var aObject = {prop1: 3, prop2: \"hello\"}; aObject.prop1" 5 13))
+
+(ert-deftest js2-jump-to-property ()
+ (js2-navigation-helper "aObject.func = functon(){};aObject.func" 9))
+
+(ert-deftest js2-jump-to-property-object-property ()
+ (js2-navigation-helper "aObject.value = {prop:1};aObject.value.prop" 18))