4 # Author: David Goodger <goodger@python.org>
5 # Copyright: This module has been placed in the public domain.
8 Tests for docutils.transforms.references.Footnotes.
11 from __init__
import DocutilsTestSupport
12 from docutils
.transforms
.references
import Footnotes
13 from docutils
.parsers
.rst
import Parser
18 s
= DocutilsTestSupport
.TransformTestSuite(parser
)
19 s
.generateTests(totest
)
24 totest
['footnotes'] = ((Footnotes
,), [
31 <document source="test data">
33 <footnote_reference auto="1" ids="id1" refid="autolabel">
35 <footnote auto="1" backrefs="id1" ids="autolabel" names="autolabel">
47 <document source="test data">
50 <footnote_reference auto="1" ids="id1" refid="id2">
52 <footnote auto="1" backrefs="id1" ids="id2" names="1">
59 [#]_ is the first auto-numbered footnote reference.
60 [#]_ is the second auto-numbered footnote reference.
62 .. [#] Auto-numbered footnote 1.
63 .. [#] Auto-numbered footnote 2.
64 .. [#] Auto-numbered footnote 3.
66 [#]_ is the third auto-numbered footnote reference.
69 <document source="test data">
71 <footnote_reference auto="1" ids="id1" refid="id3">
73 is the first auto-numbered footnote reference.
74 <footnote_reference auto="1" ids="id2" refid="id4">
76 is the second auto-numbered footnote reference.
77 <footnote auto="1" backrefs="id1" ids="id3" names="1">
81 Auto-numbered footnote 1.
82 <footnote auto="1" backrefs="id2" ids="id4" names="2">
86 Auto-numbered footnote 2.
87 <footnote auto="1" backrefs="id6" ids="id5" names="3">
91 Auto-numbered footnote 3.
93 <footnote_reference auto="1" ids="id6" refid="id5">
95 is the third auto-numbered footnote reference.
98 [#third]_ is a reference to the third auto-numbered footnote.
100 .. [#first] First auto-numbered footnote.
101 .. [#second] Second auto-numbered footnote.
102 .. [#third] Third auto-numbered footnote.
104 [#second]_ is a reference to the second auto-numbered footnote.
105 [#first]_ is a reference to the first auto-numbered footnote.
106 [#third]_ is another reference to the third auto-numbered footnote.
108 Here are some internal cross-references to the implicit targets
109 generated by the footnotes: first_, second_, third_.
112 <document source="test data">
114 <footnote_reference auto="1" ids="id1" refid="third">
116 is a reference to the third auto-numbered footnote.
117 <footnote auto="1" backrefs="id3" ids="first" names="first">
121 First auto-numbered footnote.
122 <footnote auto="1" backrefs="id2" ids="second" names="second">
126 Second auto-numbered footnote.
127 <footnote auto="1" backrefs="id1 id4" ids="third" names="third">
131 Third auto-numbered footnote.
133 <footnote_reference auto="1" ids="id2" refid="second">
135 is a reference to the second auto-numbered footnote.
136 <footnote_reference auto="1" ids="id3" refid="first">
138 is a reference to the first auto-numbered footnote.
139 <footnote_reference auto="1" ids="id4" refid="third">
141 is another reference to the third auto-numbered footnote.
143 Here are some internal cross-references to the implicit targets
144 generated by the footnotes: \n\
145 <reference name="first" refname="first">
148 <reference name="second" refname="second">
151 <reference name="third" refname="third">
156 Mixed anonymous and labelled auto-numbered footnotes:
158 [#four]_ should be 4, [#]_ should be 1,
159 [#]_ should be 3, [#]_ is one too many,
160 [#two]_ should be 2, and [#six]_ doesn't exist.
162 .. [#] Auto-numbered footnote 1.
163 .. [#two] Auto-numbered footnote 2.
164 .. [#] Auto-numbered footnote 3.
165 .. [#four] Auto-numbered footnote 4.
166 .. [#five] Auto-numbered footnote 5.
167 .. [#five] Auto-numbered footnote 5 again (duplicate).
170 <document source="test data">
172 Mixed anonymous and labelled auto-numbered footnotes:
174 <footnote_reference auto="1" ids="id1" refid="four">
177 <footnote_reference auto="1" ids="id2" refid="id7">
180 <footnote_reference auto="1" ids="id3" refid="id8">
183 <problematic ids="id11 id4" refid="id10">
186 <footnote_reference auto="1" ids="id5" refid="two">
189 <footnote_reference auto="1" ids="id6" refname="six">
191 <footnote auto="1" backrefs="id2" ids="id7" names="1">
195 Auto-numbered footnote 1.
196 <footnote auto="1" backrefs="id5" ids="two" names="two">
200 Auto-numbered footnote 2.
201 <footnote auto="1" backrefs="id3" ids="id8" names="3">
205 Auto-numbered footnote 3.
206 <footnote auto="1" backrefs="id1" ids="four" names="four">
210 Auto-numbered footnote 4.
211 <footnote auto="1" dupnames="five" ids="five">
215 Auto-numbered footnote 5.
216 <footnote auto="1" dupnames="five" ids="id9">
219 <system_message backrefs="id9" level="2" line="12" source="test data" type="WARNING">
221 Duplicate explicit target name: "five".
223 Auto-numbered footnote 5 again (duplicate).
224 <system_message backrefs="id11" ids="id10" level="3" line="3" source="test data" type="ERROR">
226 Too many autonumbered footnote references: only 2 corresponding footnotes available.
229 Mixed auto-numbered and manual footnotes:
231 .. [1] manually numbered
233 .. [#label] autonumber-labeled
236 <document source="test data">
238 Mixed auto-numbered and manual footnotes:
239 <footnote ids="id1" names="1">
244 <footnote auto="1" ids="id2" names="2">
249 <footnote auto="1" ids="label" names="label">
256 A labeled autonumbered footnote referece: [#footnote]_.
258 An unlabeled autonumbered footnote referece: [#]_.
260 .. [#] Unlabeled autonumbered footnote.
261 .. [#footnote] Labeled autonumbered footnote.
262 Note that the footnotes are not in the same
263 order as the references.
266 <document source="test data">
268 A labeled autonumbered footnote referece: \n\
269 <footnote_reference auto="1" ids="id1" refid="footnote">
273 An unlabeled autonumbered footnote referece: \n\
274 <footnote_reference auto="1" ids="id2" refid="id3">
277 <footnote auto="1" backrefs="id2" ids="id3" names="1">
281 Unlabeled autonumbered footnote.
282 <footnote auto="1" backrefs="id1" ids="footnote" names="footnote">
286 Labeled autonumbered footnote.
287 Note that the footnotes are not in the same
288 order as the references.
291 Mixed manually-numbered, anonymous auto-numbered,
292 and labelled auto-numbered footnotes:
294 [#four]_ should be 4, [#]_ should be 2,
295 [1]_ is 1, [3]_ is 3,
296 [#]_ should be 6, [#]_ is one too many,
297 [#five]_ should be 5, and [#eight]_ doesn't exist.
299 .. [1] Manually-numbered footnote 1.
300 .. [#] Auto-numbered footnote 2.
301 .. [#four] Auto-numbered footnote 4.
302 .. [3] Manually-numbered footnote 3
303 .. [#five] Auto-numbered footnote 5.
304 .. [#] Auto-numbered footnote 6.
305 .. [#five] Auto-numbered footnote 5 again (duplicate).
308 <document source="test data">
310 Mixed manually-numbered, anonymous auto-numbered,
311 and labelled auto-numbered footnotes:
313 <footnote_reference auto="1" ids="id1" refid="four">
316 <footnote_reference auto="1" ids="id2" refid="id10">
319 <footnote_reference ids="id3" refid="id9">
322 <footnote_reference ids="id4" refid="id11">
325 <footnote_reference auto="1" ids="id5" refid="id12">
328 <problematic ids="id15 id6" refid="id14">
331 <footnote_reference auto="1" ids="id7" refname="five">
333 <footnote_reference auto="1" ids="id8" refname="eight">
335 <footnote backrefs="id3" ids="id9" names="1">
339 Manually-numbered footnote 1.
340 <footnote auto="1" backrefs="id2" ids="id10" names="2">
344 Auto-numbered footnote 2.
345 <footnote auto="1" backrefs="id1" ids="four" names="four">
349 Auto-numbered footnote 4.
350 <footnote backrefs="id4" ids="id11" names="3">
354 Manually-numbered footnote 3
355 <footnote auto="1" dupnames="five" ids="five">
359 Auto-numbered footnote 5.
360 <footnote auto="1" backrefs="id5" ids="id12" names="6">
364 Auto-numbered footnote 6.
365 <footnote auto="1" dupnames="five" ids="id13">
368 <system_message backrefs="id13" level="2" line="15" source="test data" type="WARNING">
370 Duplicate explicit target name: "five".
372 Auto-numbered footnote 5 again (duplicate).
373 <system_message backrefs="id15" ids="id14" level="3" line="4" source="test data" type="ERROR">
375 Too many autonumbered footnote references: only 2 corresponding footnotes available.
378 Referencing a footnote by symbol [*]_.
380 .. [*] This is an auto-symbol footnote.
383 <document source="test data">
385 Referencing a footnote by symbol \n\
386 <footnote_reference auto="*" ids="id1" refid="id2">
389 <footnote auto="*" backrefs="id1" ids="id2">
393 This is an auto-symbol footnote.
396 A sequence of symbol footnote references:
397 [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_ [*]_.
399 .. [*] Auto-symbol footnote 1.
400 .. [*] Auto-symbol footnote 2.
401 .. [*] Auto-symbol footnote 3.
402 .. [*] Auto-symbol footnote 4.
403 .. [*] Auto-symbol footnote 5.
404 .. [*] Auto-symbol footnote 6.
405 .. [*] Auto-symbol footnote 7.
406 .. [*] Auto-symbol footnote 8.
407 .. [*] Auto-symbol footnote 9.
408 .. [*] Auto-symbol footnote 10.
409 .. [*] Auto-symbol footnote 11.
410 .. [*] Auto-symbol footnote 12.
413 <document source="test data">
415 A sequence of symbol footnote references:
416 <footnote_reference auto="*" ids="id1" refid="id13">
419 <footnote_reference auto="*" ids="id2" refid="id14">
422 <footnote_reference auto="*" ids="id3" refid="id15">
425 <footnote_reference auto="*" ids="id4" refid="id16">
428 <footnote_reference auto="*" ids="id5" refid="id17">
431 <footnote_reference auto="*" ids="id6" refid="id18">
434 <footnote_reference auto="*" ids="id7" refid="id19">
437 <footnote_reference auto="*" ids="id8" refid="id20">
440 <footnote_reference auto="*" ids="id9" refid="id21">
443 <footnote_reference auto="*" ids="id10" refid="id22">
446 <footnote_reference auto="*" ids="id11" refid="id23">
449 <footnote_reference auto="*" ids="id12" refid="id24">
452 <footnote auto="*" backrefs="id1" ids="id13">
456 Auto-symbol footnote 1.
457 <footnote auto="*" backrefs="id2" ids="id14">
461 Auto-symbol footnote 2.
462 <footnote auto="*" backrefs="id3" ids="id15">
466 Auto-symbol footnote 3.
467 <footnote auto="*" backrefs="id4" ids="id16">
471 Auto-symbol footnote 4.
472 <footnote auto="*" backrefs="id5" ids="id17">
476 Auto-symbol footnote 5.
477 <footnote auto="*" backrefs="id6" ids="id18">
481 Auto-symbol footnote 6.
482 <footnote auto="*" backrefs="id7" ids="id19">
486 Auto-symbol footnote 7.
487 <footnote auto="*" backrefs="id8" ids="id20">
491 Auto-symbol footnote 8.
492 <footnote auto="*" backrefs="id9" ids="id21">
496 Auto-symbol footnote 9.
497 <footnote auto="*" backrefs="id10" ids="id22">
501 Auto-symbol footnote 10.
502 <footnote auto="*" backrefs="id11" ids="id23">
506 Auto-symbol footnote 11.
507 <footnote auto="*" backrefs="id12" ids="id24">
511 Auto-symbol footnote 12.
514 Duplicate manual footnote labels:
521 <document source="test data">
523 Duplicate manual footnote labels:
524 <footnote dupnames="1" ids="id1">
529 <footnote dupnames="1" ids="id2">
532 <system_message backrefs="id2" level="2" line="5" source="test data" type="WARNING">
534 Duplicate explicit target name: "1".
541 if __name__
== '__main__':
543 unittest
.main(defaultTest
='suite')