-
Notifications
You must be signed in to change notification settings - Fork 0
/
adjust-parens-tests.el
129 lines (113 loc) · 4.79 KB
/
adjust-parens-tests.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
;;; adjust-parens-tests.el --- Tests of adjust-parens package
;; Copyright (C) 2013 Free Software Foundation, Inc.
;; Author: Barry O'Reilly <gundaetiapo@gmail.com>
;; This program 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.
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;;; Code:
(require 'ert)
(require 'adjust-parens)
(defun apt-check-buffer (text-before-point text-after-point)
(should (string= text-before-point
(buffer-substring-no-properties (point-min)
(point))))
(should (string= text-after-point
(buffer-substring-no-properties (point)
(point-max)))))
(ert-deftest apt-mode-test ()
(with-temp-buffer
(emacs-lisp-mode)
(adjust-parens-mode -1)
(should-not (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))
(adjust-parens-mode 1)
(should (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))
(adjust-parens-mode -1)
(should-not (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))))
(ert-deftest apt-gloabl-mode-test ()
(with-temp-buffer
(emacs-lisp-mode)
(adjust-parens-mode 1)
(global-adjust-parens-mode -1)
(should-not (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))
(global-adjust-parens-mode 1)
(should (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))
(global-adjust-parens-mode -1)
(should-not (eq (key-binding (kbd "TAB"))
#'lisp-indent-adjust-parens))))
(ert-deftest apt-near-bob-test ()
(with-temp-buffer
(emacs-lisp-mode)
(insert "(foo)\n")
(lisp-indent-adjust-parens)
(apt-check-buffer "(foo\n " ")")))
(ert-deftest apt-indent-dedent-test ()
(with-temp-buffer
(emacs-lisp-mode)
(setq indent-tabs-mode nil)
(insert ";;\n"
"(let ((x 10) (y (some-func 20))))\n"
"; Comment")
(beginning-of-line)
(lisp-indent-adjust-parens)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20)))\n"
" ")
"); Comment")
(lisp-indent-adjust-parens 3)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20\n"
" ")
")))); Comment")
(lisp-dedent-adjust-parens 2)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20))\n"
" ")
")); Comment")
;; Check what happens when point is not at the indentation, or
;; indentation is not correct, or both
(beginning-of-line) ; Point not at indentation
;; Should simply move point to indentation and not change buffer
(lisp-indent-adjust-parens)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20))\n"
" ")
")); Comment")
;; Same check for dedent
(beginning-of-line) ; Point not at indentation
;; Should simply move point to indentation and not change buffer
(lisp-dedent-adjust-parens)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20))\n"
" ")
")); Comment")
(delete-backward-char 3) ; Incorrect indentation
;; Should reindent line and move point to indentation but not
;; change parens
(lisp-indent-adjust-parens)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20))\n"
" ")
")); Comment")
(insert " ") ; Wrong indentation
(forward-char 2) ; Point is past indentation
;; Should reindent line without moving point or changing parens
(lisp-indent-adjust-parens)
(apt-check-buffer (concat ";;\n"
"(let ((x 10) (y (some-func 20))\n"
" ))")
"; Comment")
))
;;; adjust-parens-tests.el ends here