| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 | 
							- ;;; test-org-footnote.el --- Tests for org-footnote.el
 
- ;; Copyright (C) 2012  Nicolas Goaziou
 
- ;; Author: Nicolas Goaziou <n.goaziou at gmail dot com>
 
- ;; 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 <http://www.gnu.org/licenses/>.
 
- ;;; Code:
 
- (ert-deftest test-org-footnote/normalize-in-org ()
 
-   "Test specifications for `org-footnote-normalize' in an Org buffer."
 
-   ;; 1. With a non-nil `org-footnote-section'.
 
-   (let ((org-footnote-section "Footnotes")
 
- 	(org-blank-before-new-entry '((heading . auto))))
 
-     ;; 1.1. Normalize each type of footnote: standard, labelled,
 
-     ;;      numbered, inline, anonymous.
 
-     (org-test-with-temp-text
 
- 	"Paragraph[fn:1][fn:label][1][fn:inline:Inline][fn::Anonymous]
 
- * Footnotes
 
- \[fn:1] Standard
 
- \[fn:label] Labelled
 
- \[1] Numbered"
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "Paragraph[1][2][3][4][5]
 
- * Footnotes
 
- \[1] Standard
 
- \[2] Labelled
 
- \[3] Numbered
 
- \[4] Inline
 
- \[5] Anonymous
 
- ")))
 
-     ;; 1.2. When no footnote section is present, create it.  Follow
 
-     ;;      `org-blank-before-new-entry' specifications when doing so.
 
-     (org-test-with-temp-text "Paragraph[fn:1]\n\n[fn:1] Definition"
 
-       (org-footnote-normalize)
 
-       (should (equal (buffer-string)
 
- 		     "Paragraph[1]\n\n* Footnotes\n\n[1] Definition")))
 
-     (org-test-with-temp-text "Paragraph[fn:1]\n* Head1\n[fn:1] Definition"
 
-       (let ((org-blank-before-new-entry '((heading))))
 
- 	(org-footnote-normalize))
 
-       (should (equal (buffer-string)
 
- 		     "Paragraph[1]\n* Head1\n* Footnotes\n\n[1] Definition")))
 
-     ;; 1.3. When the footnote section is misplaced, move it at the end
 
-     ;;      of the buffer.
 
-     (org-test-with-temp-text "* Head1
 
- Body[fn:1]
 
- * Footnotes
 
- \[fn:1] Definition 1
 
- * Head2"
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "* Head1
 
- Body[1]
 
- * Head2
 
- * Footnotes
 
- \[1] Definition 1"))))
 
-   ;; 2. With a nil `org-footnote-section'.
 
-   (let ((org-footnote-section nil))
 
-     ;; 2.1. Normalize each type of footnote: standard, labelled,
 
-     ;;      numbered, inline, anonymous.
 
-     (org-test-with-temp-text
 
- 	"Paragraph[fn:1][fn:label][1][fn:inline:Inline][fn::Anonymous]
 
- \[fn:1] Standard
 
- \[fn:label] Labelled
 
- \[1] Numbered"
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "Paragraph[1][2][3][4][5]
 
- \[1] Standard
 
- \[2] Labelled
 
- \[3] Numbered
 
- \[4] Inline
 
- \[5] Anonymous
 
- ")))
 
-     ;; 2.2. Put each footnote definition at the end of the section
 
-     ;;      containing its first reference.
 
-     (org-test-with-temp-text
 
- 	"* Head 1
 
- Text[fn:1:Def1]
 
- * Head 2
 
- Text[fn:1]
 
- * Head 3
 
- Text[fn:2:Def2]"
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "* Head 1
 
- Text[1]
 
- \[1] Def1
 
- * Head 2
 
- Text[1]
 
- * Head 3
 
- Text[2]
 
- \[2] Def2
 
- ")))))
 
- (ert-deftest test-org-footnote/normalize-outside-org ()
 
-   "Test `org-footnote-normalize' specifications for buffers not in Org mode."
 
-   ;; 1. In a non-Org buffer, footnotes definitions are always put at
 
-   ;;    its end.
 
-   (let ((org-footnote-tag-for-non-org-mode-files nil))
 
-     (with-temp-buffer
 
-       (insert "Paragraph[fn:1][fn:label][1][fn:inline:Inline][fn::Anonymous]
 
- \[fn:1] Standard
 
- \[fn:label] Labelled
 
- \[1] Numbered
 
- Some additional text.")
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "Paragraph[1][2][3][4][5]
 
- Some additional text.
 
- \[1] Standard
 
- \[2] Labelled
 
- \[3] Numbered
 
- \[4] Inline
 
- \[5] Anonymous"))))
 
-   ;; 2. With a special tag.
 
-   (let ((org-footnote-tag-for-non-org-mode-files "Footnotes:"))
 
-     ;; 2.1. The tag must be inserted before the footnotes, separated
 
-     ;;      from the rest of the text with a blank line.
 
-     (with-temp-buffer
 
-       (insert "Paragraph[fn:1][fn::Anonymous]
 
- \[fn:1] Standard
 
- Some additional text.")
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "Paragraph[1][2]
 
- Some additional text.
 
- Footnotes:
 
- \[1] Standard
 
- \[2] Anonymous")))
 
-     ;; 2.2. Any tag already inserted in the buffer should be removed
 
-     ;;      prior to footnotes insertion.
 
-     (with-temp-buffer
 
-       (insert "Text[fn:1]
 
- Footnotes:
 
- Additional text.
 
- Footnotes:
 
- \[fn:1] Definition")
 
-       (org-footnote-normalize)
 
-       (should
 
-        (equal (buffer-string)
 
- 	      "Text[1]
 
- Additional text.
 
- Footnotes:
 
- \[1] Definition"))))
 
-   ;; 3. As an exception, in `message-mode' buffer, if a signature is
 
-   ;;    present, insert footnotes before it.n
 
-   (let ((org-footnote-tag-for-non-org-mode-files nil))
 
-     (with-temp-buffer
 
-       (insert "Body[fn::def]
 
- -- 
 
- Fake signature
 
- -- 
 
- Signature")
 
-       ;; Mimic `message-mode'.
 
-       (let ((major-mode 'message-mode)
 
- 	    (message-cite-prefix-regexp "\\([ 	]*[_.[:word:]]+>+\\|[ 	]*[]>|]\\)+")
 
- 	    (message-signature-separator "^-- $"))
 
- 	(flet ((message-point-in-header-p nil nil))
 
- 	  (org-footnote-normalize)))
 
-       (should
 
-        (equal (buffer-string)
 
-               "Body[1]
 
- -- 
 
- Fake signature
 
- \[1] def
 
- -- 
 
- Signature")))))
 
- (ert-deftest test-org-footnote/sort ()
 
-   "Test footnotes definitions sorting."
 
-   (let ((org-footnote-section nil))
 
-     (org-test-with-temp-text
 
-         "Text[fn:1][fn::inline][fn:2][fn:label]
 
- \[fn:label] C
 
- \[fn:1] A
 
- \[fn:2] B"
 
-     (org-footnote-normalize 'sort)
 
-     (should
 
-      (equal (buffer-string)
 
-             "Text[fn:1][fn::inline][fn:2][fn:label]
 
- \[fn:1] A
 
- \[fn:2] B
 
- \[fn:label] C
 
- ")))))
 
- (provide 'test-org-footnote)
 
- ;;; test-org-footnote.el ends here
 
 
  |