summaryrefslogtreecommitdiff
path: root/test/lisp/replace-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'test/lisp/replace-tests.el')
-rw-r--r--test/lisp/replace-tests.el22
1 files changed, 22 insertions, 0 deletions
diff --git a/test/lisp/replace-tests.el b/test/lisp/replace-tests.el
index adef5a3f3dc..a8bc5407f42 100644
--- a/test/lisp/replace-tests.el
+++ b/test/lisp/replace-tests.el
@@ -358,4 +358,26 @@ Each element has the format:
(dotimes (i (length replace-occur-tests))
(replace-occur-test-create i))
+(defun replace-tests--query-replace-undo (&optional comma)
+ (with-temp-buffer
+ (insert "111")
+ (goto-char 1)
+ (let ((count 0))
+ ;; Don't wait for user input.
+ (cl-letf (((symbol-function 'read-event)
+ (lambda (&rest args)
+ (cl-incf count)
+ (let ((val (pcase count
+ ('2 (if comma ?, ?\s)) ; replace and: ',' no move; '\s' go next
+ ('3 ?u) ; undo
+ ('4 ?q) ; exit
+ (_ ?\s)))) ; replace current and go next
+ val))))
+ (perform-replace "1" "2" t nil nil)))
+ (buffer-string)))
+
+(ert-deftest query-replace--undo ()
+ (should (string= "211" (replace-tests--query-replace-undo)))
+ (should (string= "211" (replace-tests--query-replace-undo 'comma))))
+
;;; replace-tests.el ends here