;;; visual-wrap-tests.el --- Tests for `visual-wrap-prefix-mode' -*- lexical-binding: t; -*- ;; Copyright (C) 2024 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. ;; GNU Emacs 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. ;; GNU Emacs 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 GNU Emacs. If not, see . ;;; Commentary: ;; Tets for `visual-wrap-prefix-mode'. ;;; Code: (require 'visual-wrap) (require 'ert) ;;; Tests: (ert-deftest visual-wrap-tests/simple () "Test adding wrapping properties to text without display properties." (with-temp-buffer (insert "greetings\n* hello\n* hi") (visual-wrap-prefix-function (point-min) (point-max)) (should (equal-including-properties (buffer-string) #("greetings\n* hello\n* hi" 10 12 ( wrap-prefix (space :align-to (2 . width)) display (min-width ((2 . width)))) 12 17 ( wrap-prefix (space :align-to (2 . width))) 18 20 ( wrap-prefix (space :align-to (2 . width)) display (min-width ((2 . width)))) 20 22 ( wrap-prefix (space :align-to (2 . width)))))))) (ert-deftest visual-wrap-tests/safe-display () "Test adding wrapping properties to text with safe display properties." (with-temp-buffer (insert #("* hello" 2 7 (display (raise 1)))) (visual-wrap-prefix-function (point-min) (point-max)) (message "%S" (buffer-string)) (should (equal-including-properties (buffer-string) #("* hello" 0 2 ( wrap-prefix (space :align-to (2 . width)) display (min-width ((2 . width)))) 2 7 ( wrap-prefix (space :align-to (2 . width)) display (raise 1))))))) (ert-deftest visual-wrap-tests/unsafe-display/within-line () "Test adding wrapping properties to text with unsafe display properties. When these properties don't extend across multiple lines, `visual-wrap-prefix-mode' can still add wrapping properties." (with-temp-buffer (insert #("* [img]" 2 7 (display (image :type bmp)))) (visual-wrap-prefix-function (point-min) (point-max)) (message "%S" (buffer-string)) (should (equal-including-properties (buffer-string) #("* [img]" 0 2 ( wrap-prefix (space :align-to (2 . width)) display (min-width ((2 . width)))) 2 7 ( wrap-prefix (space :align-to (2 . width)) display (image :type bmp))))))) (ert-deftest visual-wrap-tests/unsafe-display/spanning-lines () "Test adding wrapping properties to text with unsafe display properties. When these properties do extend across multiple lines, `visual-wrap-prefix-mode' must avoid adding wrapping properties." (with-temp-buffer (insert #("* a\n* b" 0 7 (display (image :type bmp)))) (visual-wrap-prefix-function (point-min) (point-max)) (should (equal-including-properties (buffer-string) #("* a\n* b" 0 7 (display (image :type bmp))))))) ;; visual-wrap-tests.el ends here