branch: elpa/evil-numbers
commit 951ba98369120ceabe772ee338d65ff4c29197b8
Author: Campbell Barton <[email protected]>
Commit: Campbell Barton <[email protected]>

    Tests: add regression test for padding with block selection
    
    Adds test to verify that padding is preserved when using block
    selection, validating the fix from c37a4cf92a9cf8aa9f8bd752ea856a9d1bc6c84c.
---
 tests/evil-numbers-tests.el | 59 ++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 56 insertions(+), 3 deletions(-)

diff --git a/tests/evil-numbers-tests.el b/tests/evil-numbers-tests.el
index 37d8892b057..242579bb5fc 100644
--- a/tests/evil-numbers-tests.el
+++ b/tests/evil-numbers-tests.el
@@ -6,9 +6,6 @@
 
 ;; See: `evil-numbers-tests.sh' for launching this script.
 
-;; Bugs fixed in:
-;; c37a4cf92a9cf8aa9f8bd752ea856a9d1bc6c84c
-
 (require 'ert)
 
 (setq evil-numbers-tests-basedir
@@ -500,5 +497,61 @@ the number directly before it should NOT be manipulated."
         "a|")
       (should (equal text-expected (buffer-string))))))
 
+;; See commit c37a4cf92a9cf8aa9f8bd752ea856a9d1bc6c84c.
+(ert-deftest selected-block-column-padding-preserved ()
+  "Block selection should preserve padding when `evil-numbers-pad-default' is 
set.
+When incrementing numbers using block selection with padding enabled,
+the padding should be preserved. For example, incrementing 7 with padding
+should result in 08 (matching original width), not 8."
+  ;; Save the default value to restore later.
+  (let ((default-value evil-numbers-pad-default))
+    (unwind-protect
+        (progn
+          ;; Test with padding enabled via evil-numbers-pad-default.
+          (setq evil-numbers-pad-default t)
+          (let ((text-expected
+                 ;; format-next-line: off
+                 (concat "0|8 00 00\n"
+                         "08 00 00\n"
+                         "08 00 00\n"))
+                (text-initial
+                 ;; format-next-line: off
+                 (concat "07 00 00\n"
+                         "07 00 00\n"
+                         "07 00 00\n")))
+            (with-evil-numbers-test text-initial
+              (simulate-input
+                ;; Block select the first column (both digits).
+                (kbd "C-v")
+                "ljj"
+                ;; Increment.
+                (kbd "C-a")
+                ;; Show cursor location.
+                "a|")
+              (should (equal text-expected (buffer-string)))))
+          ;; Also test decrement preserves padding.
+          (let ((text-expected
+                 ;; format-next-line: off
+                 (concat "0|6 00 00\n"
+                         "06 00 00\n"
+                         "06 00 00\n"))
+                (text-initial
+                 ;; format-next-line: off
+                 (concat "07 00 00\n"
+                         "07 00 00\n"
+                         "07 00 00\n")))
+            (with-evil-numbers-test text-initial
+              (simulate-input
+                ;; Block select the first column (both digits).
+                (kbd "C-v")
+                "ljj"
+                ;; Decrement.
+                (kbd "C-x")
+                ;; Show cursor location.
+                "a|")
+              (should (equal text-expected (buffer-string))))))
+      ;; Restore the default value.
+      (setq evil-numbers-pad-default default-value))))
+
 (provide 'evil-numbers-tests)
 ;;; evil-numbers-tests.el ends here

Reply via email to