emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 207f235 3/3: * test/automated/simple-test.el: New f


From: Artur Malabarba
Subject: [Emacs-diffs] master 207f235 3/3: * test/automated/simple-test.el: New file
Date: Mon, 26 Oct 2015 00:28:49 +0000

branch: master
commit 207f235e33ce9226d4004b47ccef89b3ea3c7fdb
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    * test/automated/simple-test.el: New file
    
    Define tests for `newline' and `open-line'.
---
 test/automated/simple-test.el |  183 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 183 insertions(+), 0 deletions(-)

diff --git a/test/automated/simple-test.el b/test/automated/simple-test.el
new file mode 100644
index 0000000..a9c4d67
--- /dev/null
+++ b/test/automated/simple-test.el
@@ -0,0 +1,183 @@
+;;; simple-test.el --- Tests for simple.el           -*- lexical-binding: t; 
-*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Artur Malabarba <address@hidden>
+
+;; 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/>.
+
+;;; Code:
+
+(require 'ert)
+
+(defmacro simple-test--dummy-buffer (&rest body)
+  (declare (indent 0)
+           (debug t))
+  `(with-temp-buffer
+     (emacs-lisp-mode)
+     (insert "(a b")
+     (save-excursion (insert " c d)"))
+     ,@body
+     (cons (buffer-substring (point-min) (point))
+           (buffer-substring (point) (point-max)))))
+
+
+
+;;; `newline'
+(ert-deftest newline ()
+  (should-error (newline -1))
+  (should (equal (simple-test--dummy-buffer (newline 1))
+                 '("(a b\n" . " c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-mode -1)
+                   (call-interactively #'newline))
+                 '("(a b\n" . " c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (let ((current-prefix-arg 5))
+                     (call-interactively #'newline)))
+                 '("(a b\n\n\n\n\n" . " c d)")))
+  (should (equal (simple-test--dummy-buffer (newline 5))
+                 '("(a b\n\n\n\n\n" . " c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-char 1)
+                   (newline 1))
+                 '("(a b \n" . "c d)"))))
+
+(ert-deftest newline-indent ()
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (newline 1))
+                 '("(a b\n" . " c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (newline 1 'interactive))
+                 '("(a b\n   " . "c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (let ((current-prefix-arg nil))
+                     (call-interactively #'newline)
+                     (call-interactively #'newline)))
+                 '("(a b\n\n   " . "c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (newline 5 'interactive))
+                 '("(a b\n\n\n\n\n   " . "c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (let ((current-prefix-arg 5))
+                     (call-interactively #'newline)))
+                 '("(a b\n\n\n\n\n   " . "c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-char 1)
+                   (electric-indent-local-mode 1)
+                   (newline 1 'interactive))
+                 '("(a b\n   " . "c d)"))))
+
+
+;;; `open-line'
+(ert-deftest open-line ()
+  (should-error (open-line -1))
+  (should-error (open-line))
+  (should (equal (simple-test--dummy-buffer (open-line 1))
+                 '("(a b" . "\n c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-mode -1)
+                   (call-interactively #'open-line))
+                 '("(a b" . "\n c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (let ((current-prefix-arg 5))
+                     (call-interactively #'open-line)))
+                 '("(a b" . "\n\n\n\n\n c d)")))
+  (should (equal (simple-test--dummy-buffer (open-line 5))
+                 '("(a b" . "\n\n\n\n\n c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-char 1)
+                   (open-line 1))
+                 '("(a b " . "\nc d)"))))
+
+(ert-deftest open-line-margin-and-prefix ()
+  (should (equal (simple-test--dummy-buffer
+                   (let ((left-margin 10))
+                     (open-line 3)))
+                 '("(a b" . "\n\n\n          c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-line 0)
+                   (let ((left-margin 2))
+                     (open-line 1)))
+                 '("  " . "\n  (a b c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (let ((fill-prefix "- - "))
+                     (open-line 1)))
+                 '("(a b" . "\n c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-line 0)
+                   (let ((fill-prefix "- - "))
+                     (open-line 1)))
+                 '("- - " . "\n(a b c d)"))))
+
+(ert-deftest open-line-indent ()
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (open-line 1))
+                 '("(a b" . "\n c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (open-line 1 'interactive))
+                 '("(a b" . "\n   c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (let ((current-prefix-arg nil))
+                     (call-interactively #'open-line)
+                     (call-interactively #'open-line)))
+                 '("(a b" . "\n\n   c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (open-line 5 'interactive))
+                 '("(a b" . "\n\n\n\n\n   c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (electric-indent-local-mode 1)
+                   (let ((current-prefix-arg 5))
+                     (call-interactively #'open-line)))
+                 '("(a b" . "\n\n\n\n\n   c d)")))
+  (should (equal (simple-test--dummy-buffer
+                   (forward-char 1)
+                   (electric-indent-local-mode 1)
+                   (open-line 1 'interactive))
+                 '("(a b" . "\n   c d)"))))
+
+(ert-deftest open-line-hook ()
+  (let* ((x 0)
+         (inc (lambda () (setq x (1+ x)))))
+    (simple-test--dummy-buffer
+      (add-hook 'post-self-insert-hook inc nil 'local)
+      (open-line 1))
+    (should (= x 0))
+    (simple-test--dummy-buffer
+      (add-hook 'post-self-insert-hook inc nil 'local)
+      (open-line 1 'interactive))
+    (should (= x 1))
+
+    (unwind-protect
+        (progn
+          (add-hook 'post-self-insert-hook inc)
+          (simple-test--dummy-buffer
+            (open-line 1))
+          (should (= x 1))
+          (simple-test--dummy-buffer
+            (open-line 10 'interactive))
+          (should (= x 2)))
+      (remove-hook 'post-self-insert-hook inc))))
+
+(provide 'simple-test)
+;;; simple-test.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]