Spelling fixes
[docutils.git] / test / test_parsers / test_rst / test_field_lists.py
blob284cfc938060ac9e721533e05f6534fe5898feab
1 #! /usr/bin/env python
3 # $Id$
4 # Author: David Goodger <goodger@python.org>
5 # Copyright: This module has been placed in the public domain.
7 """
8 Tests for states.py.
9 """
11 from __init__ import DocutilsTestSupport
13 def suite():
14 s = DocutilsTestSupport.ParserTestSuite()
15 s.generateTests(totest)
16 return s
18 totest = {}
20 totest['field_lists'] = [
21 ["""\
22 One-liners:
24 :Author: Me
26 :Version: 1
28 :Date: 2001-08-11
30 :Parameter i: integer
31 """,
32 """\
33 <document source="test data">
34 <paragraph>
35 One-liners:
36 <field_list>
37 <field>
38 <field_name>
39 Author
40 <field_body>
41 <paragraph>
43 <field>
44 <field_name>
45 Version
46 <field_body>
47 <paragraph>
49 <field>
50 <field_name>
51 Date
52 <field_body>
53 <paragraph>
54 2001-08-11
55 <field>
56 <field_name>
57 Parameter i
58 <field_body>
59 <paragraph>
60 integer
61 """],
62 ["""\
63 One-liners, no blank lines:
65 :Author: Me
66 :Version: 1
67 :Date: 2001-08-11
68 :Parameter i: integer
69 """,
70 """\
71 <document source="test data">
72 <paragraph>
73 One-liners, no blank lines:
74 <field_list>
75 <field>
76 <field_name>
77 Author
78 <field_body>
79 <paragraph>
81 <field>
82 <field_name>
83 Version
84 <field_body>
85 <paragraph>
87 <field>
88 <field_name>
89 Date
90 <field_body>
91 <paragraph>
92 2001-08-11
93 <field>
94 <field_name>
95 Parameter i
96 <field_body>
97 <paragraph>
98 integer
99 """],
100 ["""\
101 :field:
102 empty item above, no blank line
103 """,
104 """\
105 <document source="test data">
106 <field_list>
107 <field>
108 <field_name>
109 field
110 <field_body>
111 <system_message level="2" line="2" source="test data" type="WARNING">
112 <paragraph>
113 Field list ends without a blank line; unexpected unindent.
114 <paragraph>
115 empty item above, no blank line
116 """],
117 ["""\
118 Field bodies starting on the next line:
120 :Author:
122 :Version:
124 :Date:
125 2001-08-11
126 :Parameter i:
127 integer
128 """,
129 """\
130 <document source="test data">
131 <paragraph>
132 Field bodies starting on the next line:
133 <field_list>
134 <field>
135 <field_name>
136 Author
137 <field_body>
138 <paragraph>
140 <field>
141 <field_name>
142 Version
143 <field_body>
144 <paragraph>
146 <field>
147 <field_name>
148 Date
149 <field_body>
150 <paragraph>
151 2001-08-11
152 <field>
153 <field_name>
154 Parameter i
155 <field_body>
156 <paragraph>
157 integer
158 """],
159 ["""\
160 One-paragraph, multi-liners:
162 :Authors: Me,
163 Myself,
164 and I
165 :Version: 1
166 or so
167 :Date: 2001-08-11
168 (Saturday)
169 :Parameter i: counter
170 (integer)
171 """,
172 """\
173 <document source="test data">
174 <paragraph>
175 One-paragraph, multi-liners:
176 <field_list>
177 <field>
178 <field_name>
179 Authors
180 <field_body>
181 <paragraph>
183 Myself,
184 and I
185 <field>
186 <field_name>
187 Version
188 <field_body>
189 <paragraph>
191 or so
192 <field>
193 <field_name>
194 Date
195 <field_body>
196 <paragraph>
197 2001-08-11
198 (Saturday)
199 <field>
200 <field_name>
201 Parameter i
202 <field_body>
203 <paragraph>
204 counter
205 (integer)
206 """],
207 ["""\
208 One-paragraph, multi-liners, not lined up:
210 :Authors: Me,
211 Myself,
212 and I
213 :Version: 1
214 or so
215 :Date: 2001-08-11
216 (Saturday)
217 :Parameter i: counter
218 (integer)
219 """,
220 """\
221 <document source="test data">
222 <paragraph>
223 One-paragraph, multi-liners, not lined up:
224 <field_list>
225 <field>
226 <field_name>
227 Authors
228 <field_body>
229 <paragraph>
231 Myself,
232 and I
233 <field>
234 <field_name>
235 Version
236 <field_body>
237 <paragraph>
239 or so
240 <field>
241 <field_name>
242 Date
243 <field_body>
244 <paragraph>
245 2001-08-11
246 (Saturday)
247 <field>
248 <field_name>
249 Parameter i
250 <field_body>
251 <paragraph>
252 counter
253 (integer)
254 """],
255 ["""\
256 Multiple body elements:
258 :Authors: - Me
259 - Myself
262 :Abstract:
263 This is a field list item's body,
264 containing multiple elements.
266 Here's a literal block::
268 def f(x):
269 return x**2 + x
271 Even nested field lists are possible:
273 :Date: 2001-08-11
274 :Day: Saturday
275 :Time: 15:07
276 """,
277 """\
278 <document source="test data">
279 <paragraph>
280 Multiple body elements:
281 <field_list>
282 <field>
283 <field_name>
284 Authors
285 <field_body>
286 <bullet_list bullet="-">
287 <list_item>
288 <paragraph>
290 <list_item>
291 <paragraph>
292 Myself
293 <list_item>
294 <paragraph>
296 <field>
297 <field_name>
298 Abstract
299 <field_body>
300 <paragraph>
301 This is a field list item's body,
302 containing multiple elements.
303 <paragraph>
304 Here's a literal block:
305 <literal_block xml:space="preserve">
306 def f(x):
307 return x**2 + x
308 <paragraph>
309 Even nested field lists are possible:
310 <field_list>
311 <field>
312 <field_name>
313 Date
314 <field_body>
315 <paragraph>
316 2001-08-11
317 <field>
318 <field_name>
320 <field_body>
321 <paragraph>
322 Saturday
323 <field>
324 <field_name>
325 Time
326 <field_body>
327 <paragraph>
328 15:07
329 """],
330 ["""\
331 Nested field lists on one line:
333 :field1: :field2: :field3: body
334 :field4: :field5: :field6: body
335 :field7: body
336 :field8: body
337 :field9: body line 1
338 body line 2
339 """,
340 """\
341 <document source="test data">
342 <paragraph>
343 Nested field lists on one line:
344 <field_list>
345 <field>
346 <field_name>
347 field1
348 <field_body>
349 <field_list>
350 <field>
351 <field_name>
352 field2
353 <field_body>
354 <field_list>
355 <field>
356 <field_name>
357 field3
358 <field_body>
359 <paragraph>
360 body
361 <field>
362 <field_name>
363 field4
364 <field_body>
365 <field_list>
366 <field>
367 <field_name>
368 field5
369 <field_body>
370 <field_list>
371 <field>
372 <field_name>
373 field6
374 <field_body>
375 <paragraph>
376 body
377 <field>
378 <field_name>
379 field7
380 <field_body>
381 <paragraph>
382 body
383 <field>
384 <field_name>
385 field8
386 <field_body>
387 <paragraph>
388 body
389 <field>
390 <field_name>
391 field9
392 <field_body>
393 <paragraph>
394 body line 1
395 body line 2
396 """],
397 ["""\
398 :Parameter i j k: multiple arguments
399 """,
400 """\
401 <document source="test data">
402 <field_list>
403 <field>
404 <field_name>
405 Parameter i j k
406 <field_body>
407 <paragraph>
408 multiple arguments
409 """],
410 ["""\
411 :Field *name* `with` **inline** ``markup``: inline markup in
412 field name is parsed.
413 """,
414 """\
415 <document source="test data">
416 <field_list>
417 <field>
418 <field_name>
419 Field \n\
420 <emphasis>
421 name
423 <title_reference>
424 with
426 <strong>
427 inline
429 <literal>
430 markup
431 <field_body>
432 <paragraph>
433 inline markup in
434 field name is parsed.
435 """],
436 ["""\
437 :Field name with *bad inline markup: should generate warning.
438 """,
439 """\
440 <document source="test data">
441 <field_list>
442 <field>
443 <field_name>
444 Field name with \n\
445 <problematic ids="id2" refid="id1">
447 bad inline markup
448 <field_body>
449 <system_message backrefs="id2" ids="id1" level="2" line="1" source="test data" type="WARNING">
450 <paragraph>
451 Inline emphasis start-string without end-string.
452 <paragraph>
453 should generate warning.
454 """],
455 [r"""Some edge cases:
457 :Empty:
458 :Author: Me
459 No blank line before this paragraph.
461 : Field: marker must not begin with whitespace.
463 :Field : marker must not end with whitespace.
465 Field: marker is missing its open-colon.
467 :Field marker is missing its close-colon.
469 :Field\: names\: with\: colons\:: are possible.
471 :\\Field\ names with backslashes\\: are possible, too.
473 :\\: A backslash.
475 :Not a\\\: field list.
477 :Not a \: field list either.
479 :\: Not a field list either.
482 A definition list, not a field list.
483 """,
484 """\
485 <document source="test data">
486 <paragraph>
487 Some edge cases:
488 <field_list>
489 <field>
490 <field_name>
491 Empty
492 <field_body>
493 <field>
494 <field_name>
495 Author
496 <field_body>
497 <paragraph>
499 <system_message level="2" line="5" source="test data" type="WARNING">
500 <paragraph>
501 Field list ends without a blank line; unexpected unindent.
502 <paragraph>
503 No blank line before this paragraph.
504 <paragraph>
505 : Field: marker must not begin with whitespace.
506 <paragraph>
507 :Field : marker must not end with whitespace.
508 <paragraph>
509 Field: marker is missing its open-colon.
510 <paragraph>
511 :Field marker is missing its close-colon.
512 <field_list>
513 <field>
514 <field_name>
515 Field: names: with: colons:
516 <field_body>
517 <paragraph>
518 are possible.
519 <field>
520 <field_name>
521 \\Field names with backslashes\\
522 <field_body>
523 <paragraph>
524 are possible, too.
525 <field>
526 <field_name>
528 <field_body>
529 <paragraph>
530 A backslash.
531 <paragraph>
532 :Not a\\: field list.
533 <paragraph>
534 :Not a : field list either.
535 <paragraph>
536 :: Not a field list either.
537 <definition_list>
538 <definition_list_item>
539 <term>
541 <definition>
542 <paragraph>
543 A definition list, not a field list.
544 """],
547 if __name__ == '__main__':
548 import unittest
549 unittest.main(defaultTest='suite')