diff options
Diffstat (limited to 'test/lisp/emacs-lisp/faceup-tests')
-rw-r--r-- | test/lisp/emacs-lisp/faceup-tests/faceup-test-basics.el | 218 |
1 files changed, 100 insertions, 118 deletions
diff --git a/test/lisp/emacs-lisp/faceup-tests/faceup-test-basics.el b/test/lisp/emacs-lisp/faceup-tests/faceup-test-basics.el index 6009bfa836d..fd58c1bbca6 100644 --- a/test/lisp/emacs-lisp/faceup-tests/faceup-test-basics.el +++ b/test/lisp/emacs-lisp/faceup-tests/faceup-test-basics.el @@ -26,6 +26,7 @@ ;;; Code: +(eval-when-compile (require 'cl-lib)) (require 'faceup) (ert-deftest faceup-functions () @@ -52,163 +53,144 @@ '(a b (:y nil) (:x t))))) -(ert-deftest faceup-markup () - "Test basic `faceup' features." - ;; ---------- - ;; Basics +(ert-deftest faceup-markup-basics () (should (equal (faceup-markup-string "") "")) - (should (equal (faceup-markup-string "test") "test")) - ;; ---------- - ;; Escaping + (should (equal (faceup-markup-string "test") "test"))) + +(ert-deftest faceup-markup-escaping () (should (equal (faceup-markup-string "«") "««")) (should (equal (faceup-markup-string "«A«B«C«") "««A««B««C««")) (should (equal (faceup-markup-string "»") "«»")) - (should (equal (faceup-markup-string "»A»B»C»") "«»A«»B«»C«»")) - ;; ---------- - ;; Plain property. - ;; + (should (equal (faceup-markup-string "»A»B»C»") "«»A«»B«»C«»"))) + +(ert-deftest faceup-markup-plain () ;; UU ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face underline) s) - (should (equal (faceup-markup-string s) "AB«U:CD»EF"))) - ;; ---------- - ;; Plain property, full text - ;; + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face underline))) + "AB«U:CD»EF"))) + +(ert-deftest faceup-markup-plain-full-text () ;; UUUUUU ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 0 6 '(face underline) s) - (should (equal (faceup-markup-string s) "«U:ABCDEF»"))) - ;; ---------- - ;; Anonymous face. - ;; - ;; AA - ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face (:underline t)) s) - (should (equal (faceup-markup-string s) "AB«:(:underline t):CD»EF"))) - ;; ---------- - ;; Anonymous face -- plist with two keys. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" 0 6 (face underline))) + "«U:ABCDEF»"))) + +(ert-deftest faceup-markup-anonymous-face () ;; AA ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face (:foo t :bar nil)) s) - (should (equal (faceup-markup-string s) - "AB«:(:foo t):«:(:bar nil):CD»»EF"))) - ;; Ditto, with plist in list. - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face ((:foo t :bar nil))) s) - (should (equal (faceup-markup-string s) - "AB«:(:foo t):«:(:bar nil):CD»»EF"))) - ;; ---------- - ;; Anonymous face -- Two plists. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face (:underline t)))) + "AB«:(:underline t):CD»EF"))) + +(ert-deftest faceup-markup-anonymous-face-2keys () ;; AA ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face ((:foo t) (:bar nil))) s) - (should (equal (faceup-markup-string s) - "AB«:(:bar nil):«:(:foo t):CD»»EF"))) - ;; ---------- - ;; Anonymous face -- Nested. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face (:foo t :bar nil)))) + "AB«:(:foo t):«:(:bar nil):CD»»EF")) + ;; Plist in list. + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face ((:foo t :bar nil))))) + "AB«:(:foo t):«:(:bar nil):CD»»EF")) + ;; Two plists. + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face ((:foo t) (:bar nil))))) + "AB«:(:bar nil):«:(:foo t):CD»»EF"))) + +(ert-deftest faceup-markup-anonymous-nested () ;; AA ;; IIII ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 1 2 '(face ((:foo t))) s) - (set-text-properties 2 4 '(face ((:bar t) (:foo t))) s) - (set-text-properties 4 5 '(face ((:foo t))) s) - (should (equal (faceup-markup-string s) - "A«:(:foo t):B«:(:bar t):CD»E»F"))) - ;; ---------- - ;; Nested properties. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" + 1 2 (face ((:foo t))) + 2 4 (face ((:bar t) (:foo t))) + 4 5 (face ((:foo t))))) + "A«:(:foo t):B«:(:bar t):CD»E»F"))) + +(ert-deftest faceup-markup-nested () ;; UU ;; IIII ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 1 2 '(face italic) s) - (set-text-properties 2 4 '(face (underline italic)) s) - (set-text-properties 4 5 '(face italic) s) - (should (equal (faceup-markup-string s) "A«I:B«U:CD»E»F"))) - ;; ---------- - ;; Overlapping, but not nesting, properties. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" + 1 2 (face italic) + 2 4 (face (underline italic)) + 4 5 (face italic))) + "A«I:B«U:CD»E»F"))) + +(ert-deftest faceup-markup-overlapping () ;; UUU ;; III ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 1 2 '(face italic) s) - (set-text-properties 2 4 '(face (underline italic)) s) - (set-text-properties 4 5 '(face underline) s) - (should (equal (faceup-markup-string s) "A«I:B«U:CD»»«U:E»F"))) - ;; ---------- - ;; Overlapping, but not nesting, properties. - ;; + (should (equal (faceup-markup-string + #("ABCDEF" + 1 2 (face italic) + 2 4 (face (underline italic)) + 4 5 (face underline))) + "A«I:B«U:CD»»«U:E»F")) ;; III ;; UUU ;; ABCDEF - (let ((s "ABCDEF")) - (set-text-properties 1 2 '(face italic) s) - (set-text-properties 2 4 '(face (italic underline)) s) - (set-text-properties 4 5 '(face underline) s) - (should (equal (faceup-markup-string s) "A«I:B»«U:«I:CD»E»F"))) - ;; ---------- + (should (equal (faceup-markup-string + #("ABCDEF" + 1 2 (face italic) + 2 4 (face (italic underline)) + 4 5 (face underline))) + "A«I:B»«U:«I:CD»E»F"))) + +(ert-deftest faceup-markup-multi-face () ;; More than one face at the same location. ;; ;; The property to the front takes precedence, it is rendered as the ;; innermost parenthesis pair. - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face (underline italic)) s) - (should (equal (faceup-markup-string s) "AB«I:«U:CD»»EF"))) - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(face (italic underline)) s) - (should (equal (faceup-markup-string s) "AB«U:«I:CD»»EF"))) - ;; ---------- + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face (underline italic)))) + "AB«I:«U:CD»»EF")) + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (face (italic underline)))) + "AB«U:«I:CD»»EF")) ;; Equal ranges, full text. - (let ((s "ABCDEF")) - (set-text-properties 0 6 '(face (underline italic)) s) - (should (equal (faceup-markup-string s) "«I:«U:ABCDEF»»"))) + (should (equal (faceup-markup-string + #("ABCDEF" 0 6 (face (underline italic)))) + "«I:«U:ABCDEF»»")) ;; Ditto, with stray markup characters. - (let ((s "AB«CD»EF")) - (set-text-properties 0 8 '(face (underline italic)) s) - (should (equal (faceup-markup-string s) "«I:«U:AB««CD«»EF»»"))) + (should (equal (faceup-markup-string + #("AB«CD»EF" 0 8 (face (underline italic)))) + "«I:«U:AB««CD«»EF»»"))) - ;; ---------- - ;; Multiple properties +(ert-deftest faceup-markup-multi-property () (let ((faceup-properties '(alpha beta gamma))) ;; One property. - (let ((s "ABCDEF")) - (set-text-properties 2 4 '(alpha (a l p h a)) s) - (should (equal (faceup-markup-string s) "AB«(alpha):(a l p h a):CD»EF"))) + (should (equal (faceup-markup-string + #("ABCDEF" 2 4 (alpha (a l p h a)))) + "AB«(alpha):(a l p h a):CD»EF")) ;; Two properties, inner enclosed. - (let ((s "ABCDEFGHIJ")) - (set-text-properties 2 8 '(alpha (a l p h a)) s) - (font-lock-append-text-property 4 6 'beta '(b e t a) s) - (should (equal (faceup-markup-string s) - "AB«(alpha):(a l p h a):CD«(beta):(b e t a):EF»GH»IJ"))) + (should (equal (faceup-markup-string + (let ((s (copy-sequence "ABCDEFGHIJ"))) + (set-text-properties 2 8 '(alpha (a l p h a)) s) + (font-lock-append-text-property 4 6 'beta '(b e t a) s) + s)) + "AB«(alpha):(a l p h a):CD«(beta):(b e t a):EF»GH»IJ")) ;; Two properties, same end - (let ((s "ABCDEFGH")) - (set-text-properties 2 6 '(alpha (a)) s) - (add-text-properties 4 6 '(beta (b)) s) - (should - (equal - (faceup-markup-string s) - "AB«(alpha):(a):CD«(beta):(b):EF»»GH"))) + (should (equal (faceup-markup-string + (let ((s (copy-sequence "ABCDEFGH"))) + (set-text-properties 2 6 '(alpha (a)) s) + (add-text-properties 4 6 '(beta (b)) s) + s)) + "AB«(alpha):(a):CD«(beta):(b):EF»»GH")) ;; Two properties, overlap. - (let ((s "ABCDEFGHIJ")) - (set-text-properties 2 6 '(alpha (a)) s) - (add-text-properties 4 8 '(beta (b)) s) - (should - (equal - (faceup-markup-string s) - "AB«(alpha):(a):CD«(beta):(b):EF»»«(beta):(b):GH»IJ"))))) + (should (equal (faceup-markup-string + (let ((s (copy-sequence "ABCDEFGHIJ"))) + (set-text-properties 2 6 '(alpha (a)) s) + (add-text-properties 4 8 '(beta (b)) s) + s)) + "AB«(alpha):(a):CD«(beta):(b):EF»»«(beta):(b):GH»IJ")))) (ert-deftest faceup-clean () |