]> code.delx.au - gnu-emacs/blobdiff - test/src/editfns-tests.el
Fix 'transpose-regions' when LEAVE-MARKERS arg is non-nil
[gnu-emacs] / test / src / editfns-tests.el
index 62d7bc4f5be331884c0f85d00d4f61d97e78c372..2f90d1e7495dbd7ee57687a2f53e71a868f1ba01 100644 (file)
@@ -54,7 +54,7 @@
   ;; Bug #23859
   (should (ert-equal-including-properties
            (format "%4s" (propertize "hi" 'face 'bold))
-           #("  hi" 0 4 (face bold))))
+           #("  hi" 2 4 (face bold))))
 
   ;; Bug #23897
   (should (ert-equal-including-properties
            (format "%s" (concat (propertize "01" 'face 'bold)
                                 (propertize "23" 'face 'underline)
                                 "45"))
-           #("012345" 0 2 (face bold) 2 4 (face underline)))))
+           #("012345" 0 2 (face bold) 2 4 (face underline))))
+  ;; The last property range is extended to include padding on the
+  ;; right, but the first range is not extended to the left to include
+  ;; padding on the left!
+  (should (ert-equal-including-properties
+           (format "%12s" (concat (propertize "01234" 'face 'bold) "56789"))
+           #("  0123456789" 2 7 (face bold))))
+  (should (ert-equal-including-properties
+           (format "%-12s" (concat (propertize "01234" 'face 'bold) "56789"))
+           #("0123456789  " 0 5 (face bold))))
+  (should (ert-equal-including-properties
+           (format "%10s" (concat (propertize "01" 'face 'bold)
+                                  (propertize "23" 'face 'underline)
+                                  "45"))
+           #("    012345" 4 6 (face bold) 6 8 (face underline))))
+  (should (ert-equal-including-properties
+           (format "%-10s" (concat (propertize "01" 'face 'bold)
+                                   (propertize "23" 'face 'underline)
+                                   "45"))
+           #("012345    " 0 2 (face bold) 2 4 (face underline))))
+  (should (ert-equal-including-properties
+           (format "%-10s" (concat (propertize "01" 'face 'bold)
+                                   (propertize "23" 'face 'underline)
+                                   (propertize "45" 'face 'italic)))
+           #("012345    " 0 2 (face bold) 2 4 (face underline) 4 10 (face italic)))))
+
+;; Tests for bug#5131.
+(defun transpose-test-reverse-word (start end)
+  "Reverse characters in a word by transposing pairs of characters."
+  (let ((begm (make-marker))
+        (endm (make-marker)))
+    (set-marker begm start)
+    (set-marker endm end)
+    (while (> endm begm)
+      (progn (transpose-regions begm (1+ begm) endm (1+ endm) t)
+             (set-marker begm (1+ begm))
+             (set-marker endm (1- endm))))))
+
+(defun transpose-test-get-byte-positions (len)
+  "Validate character position to byte position translation."
+  (let ((bytes '()))
+    (dotimes (pos len)
+      (setq bytes (add-to-list 'bytes (position-bytes (1+ pos)) t)))
+    bytes))
+
+(ert-deftest transpose-ascii-regions-test ()
+  (with-temp-buffer
+    (erase-buffer)
+    (insert "abcd")
+    (transpose-test-reverse-word 1 4)
+    (should (string= (buffer-string) "dcba"))
+    (should (equal (transpose-test-get-byte-positions 5) '(1 2 3 4 5)))))
+
+(ert-deftest transpose-nonascii-regions-test-1 ()
+  (with-temp-buffer
+    (erase-buffer)
+    (insert "÷bcd")
+    (transpose-test-reverse-word 1 4)
+    (should (string= (buffer-string) "dcb÷"))
+    (should (equal (transpose-test-get-byte-positions 5) '(1 2 3 4 6)))))
+
+(ert-deftest transpose-nonascii-regions-test-2 ()
+  (with-temp-buffer
+    (erase-buffer)
+    (insert "÷ab\"äé")
+    (transpose-test-reverse-word 1 6)
+    (should (string= (buffer-string) "éä\"ba÷"))
+    (should (equal (transpose-test-get-byte-positions 7) '(1 3 5 6 7 8 10)))))
+
+;;; editfns-tests.el ends here