You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
543 lines
15 KiB
543 lines
15 KiB
#! /usr/bin/env python |
|
|
|
# $Id: test_footnotes.py 4564 2006-05-21 20:44:42Z wiemann $ |
|
# Author: David Goodger <goodger@python.org> |
|
# Copyright: This module has been placed in the public domain. |
|
|
|
""" |
|
Tests for docutils.transforms.references.Footnotes. |
|
""" |
|
|
|
from __init__ import DocutilsTestSupport |
|
from docutils.transforms.references import Footnotes |
|
from docutils.parsers.rst import Parser |
|
|
|
|
|
def suite(): |
|
parser = Parser() |
|
s = DocutilsTestSupport.TransformTestSuite(parser) |
|
s.generateTests(totest) |
|
return s |
|
|
|
totest = {} |
|
|
|
totest['footnotes'] = ((Footnotes,), [ |
|
["""\ |
|
[#autolabel]_ |
|
|
|
.. [#autolabel] text |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id1" refid="autolabel"> |
|
1 |
|
<footnote auto="1" backrefs="id1" ids="autolabel" names="autolabel"> |
|
<label> |
|
1 |
|
<paragraph> |
|
text |
|
"""], |
|
["""\ |
|
autonumber: [#]_ |
|
|
|
.. [#] text |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
autonumber: \n\ |
|
<footnote_reference auto="1" ids="id1" refid="id2"> |
|
1 |
|
<footnote auto="1" backrefs="id1" ids="id2" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
text |
|
"""], |
|
["""\ |
|
[#]_ is the first auto-numbered footnote reference. |
|
[#]_ is the second auto-numbered footnote reference. |
|
|
|
.. [#] Auto-numbered footnote 1. |
|
.. [#] Auto-numbered footnote 2. |
|
.. [#] Auto-numbered footnote 3. |
|
|
|
[#]_ is the third auto-numbered footnote reference. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id1" refid="id3"> |
|
1 |
|
is the first auto-numbered footnote reference. |
|
<footnote_reference auto="1" ids="id2" refid="id4"> |
|
2 |
|
is the second auto-numbered footnote reference. |
|
<footnote auto="1" backrefs="id1" ids="id3" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
Auto-numbered footnote 1. |
|
<footnote auto="1" backrefs="id2" ids="id4" names="2"> |
|
<label> |
|
2 |
|
<paragraph> |
|
Auto-numbered footnote 2. |
|
<footnote auto="1" backrefs="id6" ids="id5" names="3"> |
|
<label> |
|
3 |
|
<paragraph> |
|
Auto-numbered footnote 3. |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id6" refid="id5"> |
|
3 |
|
is the third auto-numbered footnote reference. |
|
"""], |
|
["""\ |
|
[#third]_ is a reference to the third auto-numbered footnote. |
|
|
|
.. [#first] First auto-numbered footnote. |
|
.. [#second] Second auto-numbered footnote. |
|
.. [#third] Third auto-numbered footnote. |
|
|
|
[#second]_ is a reference to the second auto-numbered footnote. |
|
[#first]_ is a reference to the first auto-numbered footnote. |
|
[#third]_ is another reference to the third auto-numbered footnote. |
|
|
|
Here are some internal cross-references to the implicit targets |
|
generated by the footnotes: first_, second_, third_. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id1" refid="third"> |
|
3 |
|
is a reference to the third auto-numbered footnote. |
|
<footnote auto="1" backrefs="id3" ids="first" names="first"> |
|
<label> |
|
1 |
|
<paragraph> |
|
First auto-numbered footnote. |
|
<footnote auto="1" backrefs="id2" ids="second" names="second"> |
|
<label> |
|
2 |
|
<paragraph> |
|
Second auto-numbered footnote. |
|
<footnote auto="1" backrefs="id1 id4" ids="third" names="third"> |
|
<label> |
|
3 |
|
<paragraph> |
|
Third auto-numbered footnote. |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id2" refid="second"> |
|
2 |
|
is a reference to the second auto-numbered footnote. |
|
<footnote_reference auto="1" ids="id3" refid="first"> |
|
1 |
|
is a reference to the first auto-numbered footnote. |
|
<footnote_reference auto="1" ids="id4" refid="third"> |
|
3 |
|
is another reference to the third auto-numbered footnote. |
|
<paragraph> |
|
Here are some internal cross-references to the implicit targets |
|
generated by the footnotes: \n\ |
|
<reference name="first" refname="first"> |
|
first |
|
, \n\ |
|
<reference name="second" refname="second"> |
|
second |
|
, \n\ |
|
<reference name="third" refname="third"> |
|
third |
|
. |
|
"""], |
|
["""\ |
|
Mixed anonymous and labelled auto-numbered footnotes: |
|
|
|
[#four]_ should be 4, [#]_ should be 1, |
|
[#]_ should be 3, [#]_ is one too many, |
|
[#two]_ should be 2, and [#six]_ doesn't exist. |
|
|
|
.. [#] Auto-numbered footnote 1. |
|
.. [#two] Auto-numbered footnote 2. |
|
.. [#] Auto-numbered footnote 3. |
|
.. [#four] Auto-numbered footnote 4. |
|
.. [#five] Auto-numbered footnote 5. |
|
.. [#five] Auto-numbered footnote 5 again (duplicate). |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Mixed anonymous and labelled auto-numbered footnotes: |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id1" refid="four"> |
|
4 |
|
should be 4, \n\ |
|
<footnote_reference auto="1" ids="id2" refid="id7"> |
|
1 |
|
should be 1, |
|
<footnote_reference auto="1" ids="id3" refid="id8"> |
|
3 |
|
should be 3, \n\ |
|
<problematic ids="id11 id4" refid="id10"> |
|
[#]_ |
|
is one too many, |
|
<footnote_reference auto="1" ids="id5" refid="two"> |
|
2 |
|
should be 2, and \n\ |
|
<footnote_reference auto="1" ids="id6" refname="six"> |
|
doesn't exist. |
|
<footnote auto="1" backrefs="id2" ids="id7" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
Auto-numbered footnote 1. |
|
<footnote auto="1" backrefs="id5" ids="two" names="two"> |
|
<label> |
|
2 |
|
<paragraph> |
|
Auto-numbered footnote 2. |
|
<footnote auto="1" backrefs="id3" ids="id8" names="3"> |
|
<label> |
|
3 |
|
<paragraph> |
|
Auto-numbered footnote 3. |
|
<footnote auto="1" backrefs="id1" ids="four" names="four"> |
|
<label> |
|
4 |
|
<paragraph> |
|
Auto-numbered footnote 4. |
|
<footnote auto="1" dupnames="five" ids="five"> |
|
<label> |
|
5 |
|
<paragraph> |
|
Auto-numbered footnote 5. |
|
<footnote auto="1" dupnames="five" ids="id9"> |
|
<label> |
|
6 |
|
<system_message backrefs="id9" level="2" line="12" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "five". |
|
<paragraph> |
|
Auto-numbered footnote 5 again (duplicate). |
|
<system_message backrefs="id11" ids="id10" level="3" line="3" source="test data" type="ERROR"> |
|
<paragraph> |
|
Too many autonumbered footnote references: only 2 corresponding footnotes available. |
|
"""], |
|
["""\ |
|
Mixed auto-numbered and manual footnotes: |
|
|
|
.. [1] manually numbered |
|
.. [#] auto-numbered |
|
.. [#label] autonumber-labeled |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Mixed auto-numbered and manual footnotes: |
|
<footnote ids="id1" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
manually numbered |
|
<footnote auto="1" ids="id2" names="2"> |
|
<label> |
|
2 |
|
<paragraph> |
|
auto-numbered |
|
<footnote auto="1" ids="label" names="label"> |
|
<label> |
|
3 |
|
<paragraph> |
|
autonumber-labeled |
|
"""], |
|
["""\ |
|
A labeled autonumbered footnote referece: [#footnote]_. |
|
|
|
An unlabeled autonumbered footnote referece: [#]_. |
|
|
|
.. [#] Unlabeled autonumbered footnote. |
|
.. [#footnote] Labeled autonumbered footnote. |
|
Note that the footnotes are not in the same |
|
order as the references. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
A labeled autonumbered footnote referece: \n\ |
|
<footnote_reference auto="1" ids="id1" refid="footnote"> |
|
2 |
|
. |
|
<paragraph> |
|
An unlabeled autonumbered footnote referece: \n\ |
|
<footnote_reference auto="1" ids="id2" refid="id3"> |
|
1 |
|
. |
|
<footnote auto="1" backrefs="id2" ids="id3" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
Unlabeled autonumbered footnote. |
|
<footnote auto="1" backrefs="id1" ids="footnote" names="footnote"> |
|
<label> |
|
2 |
|
<paragraph> |
|
Labeled autonumbered footnote. |
|
Note that the footnotes are not in the same |
|
order as the references. |
|
"""], |
|
["""\ |
|
Mixed manually-numbered, anonymous auto-numbered, |
|
and labelled auto-numbered footnotes: |
|
|
|
[#four]_ should be 4, [#]_ should be 2, |
|
[1]_ is 1, [3]_ is 3, |
|
[#]_ should be 6, [#]_ is one too many, |
|
[#five]_ should be 5, and [#eight]_ doesn't exist. |
|
|
|
.. [1] Manually-numbered footnote 1. |
|
.. [#] Auto-numbered footnote 2. |
|
.. [#four] Auto-numbered footnote 4. |
|
.. [3] Manually-numbered footnote 3 |
|
.. [#five] Auto-numbered footnote 5. |
|
.. [#] Auto-numbered footnote 6. |
|
.. [#five] Auto-numbered footnote 5 again (duplicate). |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Mixed manually-numbered, anonymous auto-numbered, |
|
and labelled auto-numbered footnotes: |
|
<paragraph> |
|
<footnote_reference auto="1" ids="id1" refid="four"> |
|
4 |
|
should be 4, \n\ |
|
<footnote_reference auto="1" ids="id2" refid="id10"> |
|
2 |
|
should be 2, |
|
<footnote_reference ids="id3" refid="id9"> |
|
1 |
|
is 1, \n\ |
|
<footnote_reference ids="id4" refid="id11"> |
|
3 |
|
is 3, |
|
<footnote_reference auto="1" ids="id5" refid="id12"> |
|
6 |
|
should be 6, \n\ |
|
<problematic ids="id15 id6" refid="id14"> |
|
[#]_ |
|
is one too many, |
|
<footnote_reference auto="1" ids="id7" refname="five"> |
|
should be 5, and \n\ |
|
<footnote_reference auto="1" ids="id8" refname="eight"> |
|
doesn't exist. |
|
<footnote backrefs="id3" ids="id9" names="1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
Manually-numbered footnote 1. |
|
<footnote auto="1" backrefs="id2" ids="id10" names="2"> |
|
<label> |
|
2 |
|
<paragraph> |
|
Auto-numbered footnote 2. |
|
<footnote auto="1" backrefs="id1" ids="four" names="four"> |
|
<label> |
|
4 |
|
<paragraph> |
|
Auto-numbered footnote 4. |
|
<footnote backrefs="id4" ids="id11" names="3"> |
|
<label> |
|
3 |
|
<paragraph> |
|
Manually-numbered footnote 3 |
|
<footnote auto="1" dupnames="five" ids="five"> |
|
<label> |
|
5 |
|
<paragraph> |
|
Auto-numbered footnote 5. |
|
<footnote auto="1" backrefs="id5" ids="id12" names="6"> |
|
<label> |
|
6 |
|
<paragraph> |
|
Auto-numbered footnote 6. |
|
<footnote auto="1" dupnames="five" ids="id13"> |
|
<label> |
|
7 |
|
<system_message backrefs="id13" level="2" line="15" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "five". |
|
<paragraph> |
|
Auto-numbered footnote 5 again (duplicate). |
|
<system_message backrefs="id15" ids="id14" level="3" line="4" source="test data" type="ERROR"> |
|
<paragraph> |
|
Too many autonumbered footnote references: only 2 corresponding footnotes available. |
|
"""], |
|
["""\ |
|
Referencing a footnote by symbol [*]_. |
|
|
|
.. [*] This is an auto-symbol footnote. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Referencing a footnote by symbol \n\ |
|
<footnote_reference auto="*" ids="id1" refid="id2"> |
|
* |
|
. |
|
<footnote auto="*" backrefs="id1" ids="id2"> |
|
<label> |
|
* |
|
<paragraph> |
|
This is an auto-symbol footnote. |
|
"""], |
|
["""\ |
|
A sequence of symbol footnote references: |
|
[*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_. |
|
|
|
.. [*] Auto-symbol footnote 1. |
|
.. [*] Auto-symbol footnote 2. |
|
.. [*] Auto-symbol footnote 3. |
|
.. [*] Auto-symbol footnote 4. |
|
.. [*] Auto-symbol footnote 5. |
|
.. [*] Auto-symbol footnote 6. |
|
.. [*] Auto-symbol footnote 7. |
|
.. [*] Auto-symbol footnote 8. |
|
.. [*] Auto-symbol footnote 9. |
|
.. [*] Auto-symbol footnote 10. |
|
.. [*] Auto-symbol footnote 11. |
|
.. [*] Auto-symbol footnote 12. |
|
""", |
|
u"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
A sequence of symbol footnote references: |
|
<footnote_reference auto="*" ids="id1" refid="id13"> |
|
* |
|
\n\ |
|
<footnote_reference auto="*" ids="id2" refid="id14"> |
|
\u2020 |
|
\n\ |
|
<footnote_reference auto="*" ids="id3" refid="id15"> |
|
\u2021 |
|
\n\ |
|
<footnote_reference auto="*" ids="id4" refid="id16"> |
|
\u00A7 |
|
\n\ |
|
<footnote_reference auto="*" ids="id5" refid="id17"> |
|
\u00B6 |
|
\n\ |
|
<footnote_reference auto="*" ids="id6" refid="id18"> |
|
# |
|
\n\ |
|
<footnote_reference auto="*" ids="id7" refid="id19"> |
|
\u2660 |
|
\n\ |
|
<footnote_reference auto="*" ids="id8" refid="id20"> |
|
\u2665 |
|
\n\ |
|
<footnote_reference auto="*" ids="id9" refid="id21"> |
|
\u2666 |
|
\n\ |
|
<footnote_reference auto="*" ids="id10" refid="id22"> |
|
\u2663 |
|
\n\ |
|
<footnote_reference auto="*" ids="id11" refid="id23"> |
|
** |
|
\n\ |
|
<footnote_reference auto="*" ids="id12" refid="id24"> |
|
\u2020\u2020 |
|
. |
|
<footnote auto="*" backrefs="id1" ids="id13"> |
|
<label> |
|
* |
|
<paragraph> |
|
Auto-symbol footnote 1. |
|
<footnote auto="*" backrefs="id2" ids="id14"> |
|
<label> |
|
\u2020 |
|
<paragraph> |
|
Auto-symbol footnote 2. |
|
<footnote auto="*" backrefs="id3" ids="id15"> |
|
<label> |
|
\u2021 |
|
<paragraph> |
|
Auto-symbol footnote 3. |
|
<footnote auto="*" backrefs="id4" ids="id16"> |
|
<label> |
|
\u00A7 |
|
<paragraph> |
|
Auto-symbol footnote 4. |
|
<footnote auto="*" backrefs="id5" ids="id17"> |
|
<label> |
|
\u00B6 |
|
<paragraph> |
|
Auto-symbol footnote 5. |
|
<footnote auto="*" backrefs="id6" ids="id18"> |
|
<label> |
|
# |
|
<paragraph> |
|
Auto-symbol footnote 6. |
|
<footnote auto="*" backrefs="id7" ids="id19"> |
|
<label> |
|
\u2660 |
|
<paragraph> |
|
Auto-symbol footnote 7. |
|
<footnote auto="*" backrefs="id8" ids="id20"> |
|
<label> |
|
\u2665 |
|
<paragraph> |
|
Auto-symbol footnote 8. |
|
<footnote auto="*" backrefs="id9" ids="id21"> |
|
<label> |
|
\u2666 |
|
<paragraph> |
|
Auto-symbol footnote 9. |
|
<footnote auto="*" backrefs="id10" ids="id22"> |
|
<label> |
|
\u2663 |
|
<paragraph> |
|
Auto-symbol footnote 10. |
|
<footnote auto="*" backrefs="id11" ids="id23"> |
|
<label> |
|
** |
|
<paragraph> |
|
Auto-symbol footnote 11. |
|
<footnote auto="*" backrefs="id12" ids="id24"> |
|
<label> |
|
\u2020\u2020 |
|
<paragraph> |
|
Auto-symbol footnote 12. |
|
"""], |
|
["""\ |
|
Duplicate manual footnote labels: |
|
|
|
.. [1] Footnote. |
|
|
|
.. [1] Footnote. |
|
""", |
|
"""\ |
|
<document source="test data"> |
|
<paragraph> |
|
Duplicate manual footnote labels: |
|
<footnote dupnames="1" ids="id1"> |
|
<label> |
|
1 |
|
<paragraph> |
|
Footnote. |
|
<footnote dupnames="1" ids="id2"> |
|
<label> |
|
1 |
|
<system_message backrefs="id2" level="2" line="5" source="test data" type="WARNING"> |
|
<paragraph> |
|
Duplicate explicit target name: "1". |
|
<paragraph> |
|
Footnote. |
|
"""], |
|
]) |
|
|
|
|
|
if __name__ == '__main__': |
|
import unittest |
|
unittest.main(defaultTest='suite')
|
|
|