X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/07bcdb8deee88ab740108cb7ff6bd9f75b5d349f..04f3d4bb44d7ef30e705b53f3d15e3279ac0d230:/packages/js2-mode/tests/indent.el diff --git a/packages/js2-mode/tests/indent.el b/packages/js2-mode/tests/indent.el index 27b6c5a0c..0fabe9563 100644 --- a/packages/js2-mode/tests/indent.el +++ b/packages/js2-mode/tests/indent.el @@ -1,6 +1,6 @@ ;;; tests/indent.el --- Some tests for js2-mode. -;; Copyright (C) 2009, 2011-2013 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2011-2016 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -31,14 +31,16 @@ (if keep-indent s (replace-regexp-in-string "^ *" "" s))) - (js2-mode) + (js2-jsx-mode) + (js2-reparse) ; solely for js2-jsx-self-closing, for some reason (indent-region (point-min) (point-max)) (should (string= s (buffer-substring-no-properties (point-min) (point))))))) (cl-defmacro js2-deftest-indent (name content &key bind keep-indent) `(ert-deftest ,(intern (format "js2-%s" name)) () - (let ,(append '((js2-basic-offset 2) + (let ,(append '(indent-tabs-mode + (js2-basic-offset 2) (js2-pretty-multiline-declarations t) (inhibit-point-motion-hooks t)) bind) @@ -140,3 +142,146 @@ | , | bar = 8;" :bind ((js2-pretty-multiline-declarations 'dynamic))) + +(js2-deftest-indent indent-generator-method + "class A { + | * x() { + | return 1 + | * a(2); + | } + |}") + +(js2-deftest-indent indent-generator-computed-method + "class A { + | *[Symbol.iterator]() { + | yield 'Foo'; + | yield 'Bar'; + | } + |}") + +(js2-deftest-indent case-inside-switch + "switch(true) { + |case 'true': + | return 1; + |}") + +(js2-deftest-indent case-inside-switch-with-extra-indent + "switch(true) { + | case 'true': + | return 1; + |}" + :bind ((js2-indent-switch-body t))) + +(js2-deftest-indent case-inside-switch-with-extra-indent-curly-after-newline + "switch(true) + |{ + | case 'true': + | return 1; + |}" + :bind ((js2-indent-switch-body t))) + +(js2-deftest-indent continued-expression-vs-unary-minus + "var arr = [ + | -1, 2, + | -3, 4 + + | -5 + |];") + +(js2-deftest-indent spread-inside-array + "var z = [ + | ...iterableObj, + | 4, + | 5 + |]") + +(js2-deftest-indent jsx-one-line + "var foo =
;") + +(js2-deftest-indent jsx-children-parentheses + "return ( + |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |);") + +(js2-deftest-indent jsx-children-unclosed + "return ( + |
+ |
") + +(js2-deftest-indent jsx-argument + "React.render( + |
+ |
+ |
, + | { + | a: 1 + | }, + |
+ |
+ |
+ |);") + +(js2-deftest-indent jsx-leading-comment + "return ( + | // Sneaky! + |
+ |);") + +(js2-deftest-indent jsx-trailing-comment + "return ( + |
+ | // Sneaky! + |);") + +(js2-deftest-indent jsx-self-closing + ;; This ensures we know the bounds of a self-closing element + "React.render( + | , + | { + | a: 1 + | } + |);" + :bind ((sgml-attribute-offset 1))) ; Emacs 24.5 -> 25 compat + +(js2-deftest-indent jsx-embedded-js-content + "return ( + |
+ | {array.map(function () { + | return { + | a: 1 + | }; + | })} + |
+ |);") + +(js2-deftest-indent jsx-embedded-js-unclosed + "return ( + |
+ | {array.map(function () { + | return { + | a: 1") + +(js2-deftest-indent jsx-embedded-js-attribute + "return ( + |
+ |
+ |);")