| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 | 
							- ;;; test-org-num.el --- Tests for Org Num library    -*- lexical-binding: t; -*-
 
- ;; Copyright (C) 2018  Nicolas Goaziou
 
- ;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
 
- ;; This file is not part of GNU Emacs.
 
- ;; This program 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.
 
- ;; This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.
 
- ;;; Code:
 
- (require 'org-num)
 
- (ert-deftest test-org-num/face ()
 
-   "Test `org-num-face' parameter."
 
-   (should
 
-    (equal
 
-     '(foo)
 
-     (org-test-with-temp-text "* H1"
 
-       (let ((org-num-face 'foo)) (org-num-mode 1))
 
-       (mapcar (lambda (o)
 
- 		(get-text-property 0 'face (overlay-get o 'after-string)))
 
- 	      (overlays-in (point-min) (point-max)))))))
 
- (ert-deftest test-org-num/format-function ()
 
-   "Test `org-num-format-function' parameter."
 
-   (should
 
-    (equal '("foo" "foo")
 
-           (org-test-with-temp-text "* H1\n** H2"
 
-             (let ((org-num-format-function (lambda (_) "foo")))
 
-               (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Preserve face, when set.
 
-   (should
 
-    (equal-including-properties
 
-     '(#("foo" 0 3 (face bar)))
 
-     (org-test-with-temp-text "* H1"
 
-       (let ((org-num-format-function
 
-              (lambda (_) (org-add-props "foo" nil 'face 'bar))))
 
-         (org-num-mode 1))
 
-       (mapcar (lambda (o) (overlay-get o 'after-string))
 
-               (overlays-in (point-min) (point-max))))))
 
-   ;; Set face override `org-num-face'.
 
-   (should
 
-    (equal-including-properties
 
-     '(#("foo" 0 3 (face bar)))
 
-     (org-test-with-temp-text "* H1"
 
-       (let ((org-num-face 'baz)
 
-             (org-num-format-function
 
-              (lambda (_) (org-add-props "foo" nil 'face 'bar))))
 
-         (org-num-mode 1))
 
-       (mapcar (lambda (o) (overlay-get o 'after-string))
 
-               (overlays-in (point-min) (point-max)))))))
 
- (ert-deftest test-org-num/max-level ()
 
-   "Test `org-num-max-level' option."
 
-   (should
 
-    (equal '("1.1 " "1 ")
 
-           (org-test-with-temp-text "* H1\n** H2\n*** H3"
 
-             (let ((org-num-max-level 2)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max)))))))
 
- (ert-deftest test-org-num/skip-numbering ()
 
-   "Test various skip numbering parameters."
 
-   ;; Skip commented headlines.
 
-   (should
 
-    (equal '(nil "1 ")
 
-           (org-test-with-temp-text "* H1\n* COMMENT H2"
 
-             (let ((org-num-skip-commented t)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("2 " "1 ")
 
-           (org-test-with-temp-text "* H1\n* COMMENT H2"
 
-             (let ((org-num-skip-commented nil)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Skip commented sub-trees.
 
-   (should
 
-    (equal '(nil nil)
 
-           (org-test-with-temp-text "* COMMENT H1\n** H2"
 
-             (let ((org-num-skip-commented t)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Skip footnotes sections.
 
-   (should
 
-    (equal '(nil "1 ")
 
-           (org-test-with-temp-text "* H1\n* FN"
 
-             (let ((org-num-skip-footnotes t)
 
-                   (org-footnote-section "FN"))
 
-               (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("2 " "1 ")
 
-           (org-test-with-temp-text "* H1\n* FN"
 
-             (let ((org-num-skip-footnotes nil)
 
-                   (org-footnote-section "FN"))
 
-               (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Skip tags, recursively.
 
-   (should
 
-    (equal '(nil "1 ")
 
-           (org-test-with-temp-text "* H1\n* H2 :foo:"
 
-             (let ((org-num-skip-tags '("foo"))) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '(nil nil)
 
-           (org-test-with-temp-text "* H1 :foo:\n** H2"
 
-             (let ((org-num-skip-tags '("foo"))) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Skip unnumbered sections.
 
-   (should
 
-    (equal '(nil "1 ")
 
-           (org-test-with-temp-text
 
-               "* H1\n* H2\n:PROPERTIES:\n:UNNUMBERED: t\n:END:"
 
-             (let ((org-num-skip-unnumbered t)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("2 " "1 ")
 
-           (org-test-with-temp-text
 
-               "* H1\n* H2\n:PROPERTIES:\n:UNNUMBERED: t\n:END:"
 
-             (let ((org-num-skip-unnumbered nil)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("2 " "1 ")
 
-           (org-test-with-temp-text
 
-               "* H1\n* H2\n:PROPERTIES:\n:UNNUMBERED: nil\n:END:"
 
-             (let ((org-num-skip-unnumbered t)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Skip unnumbered sub-trees.
 
-   (should
 
-    (equal '(nil nil)
 
-           (org-test-with-temp-text
 
-               "* H1\n:PROPERTIES:\n:UNNUMBERED: t\n:END:\n** H2"
 
-             (let ((org-num-skip-unnumbered t)) (org-num-mode 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max)))))))
 
- (ert-deftest test-org-num/update ()
 
-   "Test numbering update after a buffer modification."
 
-   ;; Headlines created at BEG.
 
-   (should
 
-    (equal "1 "
 
-           (org-test-with-temp-text "X* H"
 
-             (org-num-mode 1)
 
-             (delete-char 1)
 
-             (overlay-get (car (overlays-at (line-beginning-position)))
 
-                          'after-string))))
 
-   (should
 
-    (equal "1 "
 
-           (org-test-with-temp-text "*<point>\n H"
 
-             (org-num-mode 1)
 
-             (delete-char 1)
 
-             (overlay-get (car (overlays-at (line-beginning-position)))
 
-                          'after-string))))
 
-   (should
 
-    (equal "1 "
 
-           (org-test-with-temp-text "*<point>bold*"
 
-             (org-num-mode 1)
 
-             (insert " ")
 
-             (overlay-get (car (overlays-at (line-beginning-position)))
 
-                          'after-string))))
 
-   ;; Headlines created at END.
 
-   (should
 
-    (equal '("1 ")
 
-           (org-test-with-temp-text "X<point> H"
 
-             (org-num-mode 1)
 
-             (insert "\n*")
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("1 ")
 
-           (org-test-with-temp-text "X<point>* H"
 
-             (org-num-mode 1)
 
-             (insert "\n")
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Headlines created between BEG and END.
 
-   (should
 
-    (equal '("1.1 " "1 ")
 
-           (org-test-with-temp-text ""
 
-             (org-num-mode 1)
 
-             (insert "\n* H\n** H2")
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Change level of a headline.
 
-   (should
 
-    (equal '("0.1 ")
 
-           (org-test-with-temp-text "* H"
 
-             (org-num-mode 1)
 
-             (insert "*")
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '("1 ")
 
-           (org-test-with-temp-text "*<point>* H"
 
-             (org-num-mode 1)
 
-             (delete-char 1)
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Alter skip state.
 
-   (should
 
-    (equal '("1 ")
 
-           (org-test-with-temp-text "* H :fo<point>o:"
 
-             (let ((org-num-skip-tags '("foo")))
 
-               (org-num-mode 1)
 
-               (delete-char 1))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   (should
 
-    (equal '(nil)
 
-           (org-test-with-temp-text "* H :fo<point>:"
 
-             (let ((org-num-skip-tags '("foo")))
 
-               (org-num-mode 1)
 
-               (insert "o"))
 
-             (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                     (overlays-in (point-min) (point-max))))))
 
-   ;; Invalidate an overlay and insert new headlines.
 
-   (should
 
-    (equal '("1.2 " "1.1 " "1 ")
 
-           (org-test-with-temp-text
 
-               "* H\n:PROPERTIES:\n:UNNUMBE<point>RED: t\n:END:"
 
-             (let ((org-num-skip-unnumbered t))
 
-               (org-num-mode 1)
 
-               (insert "\n** H2\n** H3\n")
 
-               (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                       (overlays-in (point-min) (point-max)))))))
 
-   ;; Invalidate two overlays: current headline and next one.
 
-   (should
 
-    (equal '("1 ")
 
-           (org-test-with-temp-text
 
-               "* H\n:PROPERTIES:\n:UNNUMBE<point>RED: t\n:END:\n** H2"
 
-             (let ((org-num-skip-unnumbered t))
 
-               (org-num-mode 1)
 
-               (delete-region (point) (line-beginning-position 3))
 
-               (mapcar (lambda (o) (overlay-get o 'after-string))
 
-                       (overlays-in (point-min) (point-max))))))))
 
- (provide 'test-org-num)
 
- ;;; org-test-num.el ends here
 
 
  |