3
# Author: David Goodger
4
# Contact: goodger@python.org
5
# Revision: $Revision: 3165 $
6
# Date: $Date: 2005-04-05 04:55:06 +0200 (Tue, 05 Apr 2005) $
7
# Copyright: This module has been placed in the public domain.
10
Tests for tables.py directives.
13
from __init__ import DocutilsTestSupport
23
s = DocutilsTestSupport.ParserTestSuite()
24
s.generateTests(totest)
27
mydir = 'test_parsers/test_rst/test_directives/'
28
utf_16_csv = os.path.join(mydir, 'utf-16.csv')
29
utf_16_csv_rel = DocutilsTestSupport.utils.relative_path(None, utf_16_csv)
30
empty_txt = os.path.join(mydir, 'empty.txt')
36
.. table:: Truth table for "not"
47
<document source="test data">
48
<table classes="custom">
52
<colspec colwidth="5">
53
<colspec colwidth="5">
79
.. table:: title with an *error
86
<document source="test data">
90
<problematic ids="id2" refid="id1">
94
<colspec colwidth="6">
95
<colspec colwidth="5">
104
<system_message backrefs="id2" ids="id1" level="2" line="1" source="test data" type="WARNING">
106
Inline emphasis start-string without end-string.
111
print ('Tests of "csv-table" directive skipped; '
112
'Python 2.3 or higher required.')
114
totest['csv-table'] = [
116
.. csv-table:: inline with integral header
121
"Treat", "Quantity", "Description"
122
"Albatross", 2.99, "On a stick!"
123
"Crunchy Frog", 1.49, "If we took the bones out, it wouldn\'t be
124
crunchy, now would it?"
125
"Gannet Ripple", 1.99, "On a stick!"
128
<document source="test data">
131
inline with integral header
133
<colspec colwidth="10" stub="1">
134
<colspec colwidth="20">
135
<colspec colwidth="30">
167
If we took the bones out, it wouldn't be
168
crunchy, now would it?
181
.. csv-table:: inline with separate header
182
:header: "Treat", Quantity, "Description"
185
"Albatross", 2.99, "On a stick!"
188
<document source="test data">
191
inline with separate header
193
<colspec colwidth="10">
194
<colspec colwidth="20">
195
<colspec colwidth="30">
220
.. csv-table:: complex internal structure
221
:header: "Treat", Quantity, "
229
* Albatross", 2.99, "On a stick!"
232
<document source="test data">
235
complex internal structure
237
<colspec colwidth="33">
238
<colspec colwidth="33">
239
<colspec colwidth="33">
249
<bullet_list bullet="*">
262
<bullet_list bullet="*">
280
.. csv-table:: short rows
286
<document source="test data">
291
<colspec colwidth="33">
292
<colspec colwidth="33">
293
<colspec colwidth="33">
315
.. csv-table:: short rows
318
header col 1, header col 2
323
<document source="test data">
328
<colspec colwidth="33">
329
<colspec colwidth="33">
330
<colspec colwidth="33">
359
.. csv-table:: non-ASCII characters
361
Heiz\xf6lr\xfccksto\xdfabd\xe4mpfung
364
<document source="test data">
369
<colspec colwidth="100">
374
Heiz\xf6lr\xfccksto\xdfabd\xe4mpfung
380
<document source="test data">
381
<system_message level="2" line="1" source="test data" type="WARNING">
383
The "csv-table" directive requires content; none supplied.
384
<literal_block xml:space="preserve">
388
.. csv-table:: insufficient header row data
394
<document source="test data">
395
<system_message level="3" line="1" source="test data" type="ERROR">
397
2 header row(s) specified but only 1 row(s) of data supplied ("csv-table" directive).
398
<literal_block xml:space="preserve">
399
.. csv-table:: insufficient header row data
405
.. csv-table:: insufficient body data
411
<document source="test data">
412
<system_message level="3" line="1" source="test data" type="ERROR">
414
Insufficient data supplied (1 row(s)); no data remaining for table body, required by "csv-table" directive.
415
<literal_block xml:space="preserve">
416
.. csv-table:: insufficient body data
422
.. csv-table:: content and external
428
<document source="test data">
429
<system_message level="3" line="1" source="test data" type="ERROR">
431
"csv-table" directive may not both specify an external file and have content.
432
<literal_block xml:space="preserve">
433
.. csv-table:: content and external
439
.. csv-table:: external file and url
441
:url: http://example.org/bogus.csv
444
<document source="test data">
445
<system_message level="3" line="1" source="test data" type="ERROR">
447
The "file" and "url" options may not be simultaneously specified for the "csv-table" directive.
448
<literal_block xml:space="preserve">
449
.. csv-table:: external file and url
451
:url: http://example.org/bogus.csv
454
.. csv-table:: error in the *title
459
<document source="test data">
463
<problematic ids="id2" refid="id1">
467
<colspec colwidth="33">
468
<colspec colwidth="33">
469
<colspec colwidth="33">
481
<system_message backrefs="id2" ids="id1" level="2" line="1" source="test data" type="WARNING">
483
Inline emphasis start-string without end-string.
486
.. csv-table:: no such file
490
<document source="test data">
491
<system_message level="4" line="1" source="test data" type="SEVERE">
493
Problems with "csv-table" directive path:
494
[Errno 2] No such file or directory: 'bogus.csv'.
495
<literal_block xml:space="preserve">
496
.. csv-table:: no such file
500
.. csv-table:: bad URL
504
<document source="test data">
505
<system_message level="4" line="1" source="test data" type="SEVERE">
507
Problems with "csv-table" directive URL "bogus.csv":
508
unknown url type: bogus.csv.
509
<literal_block xml:space="preserve">
510
.. csv-table:: bad URL
514
.. csv-table:: column mismatch
520
<document source="test data">
521
<system_message level="3" line="1" source="test data" type="ERROR">
523
"csv-table" widths do not match the number of columns in table (3).
524
<literal_block xml:space="preserve">
525
.. csv-table:: column mismatch
531
.. csv-table:: bad column widths
536
.. csv-table:: bad column widths
542
<document source="test data">
543
<system_message level="3" line="1" source="test data" type="ERROR">
545
Error in "csv-table" directive:
546
invalid option value: (option: "widths"; value: '10,y,z')
547
invalid literal for int(): y.
548
<literal_block xml:space="preserve">
549
.. csv-table:: bad column widths
553
<system_message level="3" line="6" source="test data" type="ERROR">
555
Error in "csv-table" directive:
556
invalid option value: (option: "widths"; value: '0 0 0')
557
negative or zero value; must be positive.
558
<literal_block xml:space="preserve">
559
.. csv-table:: bad column widths
565
.. csv-table:: good delimiter
570
.. csv-table:: good delimiter
575
.. csv-table:: good delimiter
580
.. csv-table:: good delimiter
586
<document source="test data">
591
<colspec colwidth="33">
592
<colspec colwidth="33">
593
<colspec colwidth="33">
609
<colspec colwidth="33">
610
<colspec colwidth="33">
611
<colspec colwidth="33">
627
<colspec colwidth="33">
628
<colspec colwidth="33">
629
<colspec colwidth="33">
645
<colspec colwidth="33">
646
<colspec colwidth="33">
647
<colspec colwidth="33">
661
.. csv-table:: bad delimiter
664
.. csv-table:: bad delimiter
665
:delim: U+9999999999999
668
<document source="test data">
669
<system_message level="3" line="1" source="test data" type="ERROR">
671
Error in "csv-table" directive:
672
invalid option value: (option: "delim"; value: 'multiple')
673
'multiple' invalid; must be a single character or a Unicode code.
674
<literal_block xml:space="preserve">
675
.. csv-table:: bad delimiter
677
<system_message level="3" line="4" source="test data" type="ERROR">
679
Error in "csv-table" directive:
680
invalid option value: (option: "delim"; value: 'U+9999999999999')
681
code too large (long int too large to convert to int).
682
<literal_block xml:space="preserve">
683
.. csv-table:: bad delimiter
684
:delim: U+9999999999999
687
.. csv-table:: bad CSV data
692
<document source="test data">
693
<system_message level="3" line="1" source="test data" type="ERROR">
695
Error with CSV data in "csv-table" directive:
696
newline inside string
697
<literal_block xml:space="preserve">
698
.. csv-table:: bad CSV data
703
.. csv-table:: bad CSV header data
704
:header: "bad", \"csv, data
709
<document source="test data">
710
<system_message level="3" line="1" source="test data" type="ERROR">
712
Error with CSV data in "csv-table" directive:
713
newline inside string
714
<literal_block xml:space="preserve">
715
.. csv-table:: bad CSV header data
716
:header: "bad", \"csv, data
721
.. csv-table:: bad encoding
725
(7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
728
<document source="test data">
729
<system_message level="3" line="1" source="test data" type="ERROR">
731
Error with CSV data in "csv-table" directive:
732
string with NUL bytes
733
<literal_block xml:space="preserve">
734
.. csv-table:: bad encoding
738
(7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
741
.. csv-table:: good encoding
747
<document source="test data">
752
<colspec colwidth="33">
753
<colspec colwidth="33">
754
<colspec colwidth="33">
776
\u00a1On a \u03c3\u03c4\u03b9\u03ba!
786
If we took the b\u00f6nes out, it wouldn\u2019t be
787
crunchy, now would it?
797
\u00bfOn a \u03c3\u03c4\u03b9\u03ba?
800
.. csv-table:: no CSV data
804
<document source="test data">
805
<system_message level="3" line="1" source="test data" type="ERROR">
807
No table data detected in CSV file.
808
<literal_block xml:space="preserve">
809
.. csv-table:: no CSV data
814
totest['list-table'] = [
816
.. list-table:: list table with integral header
829
- If we took the bones out, it wouldn\'t be
830
crunchy, now would it?
836
<document source="test data">
839
list table with integral header
841
<colspec colwidth="10" stub="1">
842
<colspec colwidth="20">
843
<colspec colwidth="30">
875
If we took the bones out, it wouldn\'t be
876
crunchy, now would it?
894
<document source="test data">
895
<system_message level="3" line="1" source="test data" type="ERROR">
897
Error parsing content block for the "list-table" directive: exactly one bullet list expected.
898
<literal_block xml:space="preserve">
906
* not a second-level bullet list
909
<document source="test data">
910
<system_message level="3" line="1" source="test data" type="ERROR">
912
Error parsing content block for the "list-table" directive: two-level bullet list expected, but row 1 does not contain a second-level bullet list.
913
<literal_block xml:space="preserve">
916
* not a second-level bullet list
921
* - columns not uniform
922
* - first row has one,
926
<document source="test data">
927
<system_message level="3" line="1" source="test data" type="ERROR">
929
Error parsing content block for the "list-table" directive: uniform two-level bullet list expected, but row 2 does not contain the same number of items as row 1 (2 vs 1).
930
<literal_block xml:space="preserve">
933
* - columns not uniform
934
* - first row has one,
941
* - ":widths:" option doesn't match columns
944
<document source="test data">
945
<system_message level="3" line="1" source="test data" type="ERROR">
947
"list-table" widths do not match the number of columns in table (1).
948
<literal_block xml:space="preserve">
952
* - ":widths:" option doesn\'t match columns
962
<document source="test data">
963
<system_message level="3" line="1" source="test data" type="ERROR">
965
3 stub column(s) specified but only 2 columns(s) of data supplied ("list-table" directive).
966
<literal_block xml:space="preserve">
981
<document source="test data">
982
<system_message level="3" line="1" source="test data" type="ERROR">
984
Insufficient data supplied (2 columns(s)); no data remaining for table body, required by "list-table" directive.
985
<literal_block xml:space="preserve">
995
if __name__ == '__main__':
997
unittest.main(defaultTest='suite')