;;; js-tests.el --- Test suite for js-mode ;; Copyright (C) 2017 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;;; Commentary: ;;; Code: (require 'ert) (require 'js) (ert-deftest js-mode-fill-bug-19399 () (with-temp-buffer (insert "/") (save-excursion (insert "/ comment")) (js-mode) (fill-paragraph) (should (equal (buffer-substring (point-min) (point-max)) "// comment")))) (ert-deftest js-mode-fill-bug-22431 () (with-temp-buffer (insert "/**\n") (insert " * Load the inspector's shared head.js for use by tests that ") (insert "need to open the something or other") (js-mode) ;; This fails with auto-fill but not fill-paragraph. (do-auto-fill) (should (equal (buffer-substring (point-min) (point-max)) "/** * Load the inspector's shared head.js for use by tests that need to * open the something or other")))) (ert-deftest js-mode-fill-bug-22431-fill-paragraph-at-start () (with-temp-buffer (insert "/**\n") (insert " * Load the inspector's shared head.js for use by tests that ") (insert "need to open the something or other") (js-mode) (goto-char (point-min)) (fill-paragraph) (should (equal (buffer-substring (point-min) (point-max)) "/** * Load the inspector's shared head.js for use by tests that need to * open the something or other")))) (ert-deftest js-mode-indent-bug-15582 () (with-temp-buffer (js-mode) (setq-local js-indent-level 8) (insert "if (x > 72 &&\n y < 85) { // found\n\t") (save-excursion (insert "do_something();\n")) (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) "\tdo_something();")))) (ert-deftest js-mode-indent-bug-20896-chain () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) (setq-local indent-tabs-mode nil) (insert "let x = svg.mumble()\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-chain-comment () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) (setq-local indent-tabs-mode nil) (insert "let x = svg.mumble() // line comment\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-chain-multi () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) (setq-local indent-tabs-mode nil) ;; Must line up to the first "." at the same level. (insert "let x = svg.selectAll().something()\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-chain-nested () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) (setq-local indent-tabs-mode nil) ;; Must line up to the first "." at the same level. (insert "let x = svg.selectAll(d3.svg.something()\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-no-chain-1 () (with-temp-buffer (js-mode) ;; Don't set js-chain-indent. (insert "let x = svg.mumble()\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-no-chain-2 () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) ;; Nothing to chain to. (insert "let x = svg()\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (ert-deftest js-mode-indent-bug-20896-no-chain-2 () (with-temp-buffer (js-mode) (setq-local js-chain-indent t) ;; Nothing to chain to. (insert "let x = svg().mumble.x() + 73\n.zzz") (js-indent-line) (should (equal (buffer-substring (point-at-bol) (point-at-eol)) " .zzz")))) (provide 'js-tests) ;;; js-tests.el ends here