|
|
#! /usr/bin/env python |
|
|
# .. coding: utf-8 |
|
|
|
|
|
# $Id: test_SimpleTableParser.py 7313 2012-01-11 20:28:57Z milde $ |
|
|
# Author: David Goodger <goodger@python.org> |
|
|
# Copyright: This module has been placed in the public domain. |
|
|
|
|
|
""" |
|
|
Tests for states.py. |
|
|
""" |
|
|
|
|
|
from __init__ import DocutilsTestSupport |
|
|
|
|
|
def suite(): |
|
|
s = DocutilsTestSupport.SimpleTableParserTestSuite() |
|
|
s.generateTests(totest) |
|
|
return s |
|
|
|
|
|
totest = {} |
|
|
|
|
|
totest['simple_tables'] = [ |
|
|
["""\ |
|
|
============ ============ |
|
|
A table with two columns. |
|
|
============ ============ |
|
|
""", |
|
|
([12, 12], |
|
|
[], |
|
|
[[[0, 0, 1, ['A table with']], |
|
|
[0, 0, 1, ['two columns.']]]])], |
|
|
[u"""\ |
|
|
============ =============== |
|
|
A tāble w̅ith comb̲ining chars |
|
|
============ =============== |
|
|
""", |
|
|
([12, 15], |
|
|
[], |
|
|
[[[0, 0, 1, [u'A ta\u0304ble w\u0305ith']], |
|
|
[0, 0, 1, [u'comb\u0332ining chars']]]])], |
|
|
["""\ |
|
|
============ ============ |
|
|
A table with two columns |
|
|
and two rows. |
|
|
============ ============ |
|
|
""", |
|
|
([12, 12], |
|
|
[], |
|
|
[[[0, 0, 1, ['A table with']], |
|
|
[0, 0, 1, ['two columns']]], |
|
|
[[0, 0, 2, ['and']], |
|
|
[0, 0, 2, ['two rows.']]]])], |
|
|
["""\ |
|
|
====================================== |
|
|
The last row might stick into the margin |
|
|
second row. |
|
|
====================================== |
|
|
""", |
|
|
([40], |
|
|
[], |
|
|
[[[0, 0, 1, ['The last row might stick into the margin']]], |
|
|
[[0, 0, 2, ['second row.']]]])], |
|
|
["""\ |
|
|
========== =========== |
|
|
A table with four rows, |
|
|
----------------------- |
|
|
and two columns. |
|
|
First and last rows |
|
|
contain column spans. |
|
|
======================= |
|
|
""", |
|
|
([10, 11], |
|
|
[], |
|
|
[[[0, 1, 1, ['A table with four rows,']]], |
|
|
[[0, 0, 3, ['and two']], |
|
|
[0, 0, 3, ['columns.']]], |
|
|
[[0, 0, 4, ['First and']], |
|
|
[0, 0, 4, ['last rows']]], |
|
|
[[0, 1, 5, ['contain column spans.']]]])], |
|
|
["""\ |
|
|
======= ===== ====== |
|
|
A bad table cell 2 |
|
|
cell 3 cell 4 |
|
|
============ ====== |
|
|
""", |
|
|
'TableMarkupError: Text in column margin in table line 2.'], |
|
|
["""\ |
|
|
====== ===== ====== |
|
|
row one |
|
|
Another bad table |
|
|
====== ===== ====== |
|
|
""", |
|
|
'TableMarkupError: Text in column margin in table line 3.'], |
|
|
["""\ |
|
|
=========== ================ |
|
|
A table with two header rows, |
|
|
----------------------------- |
|
|
the first with a span. |
|
|
=========== ================ |
|
|
Two body rows, |
|
|
the second with a span. |
|
|
============================= |
|
|
""", |
|
|
([11, 16], |
|
|
[[[0, 1, 1, ['A table with two header rows,']]], |
|
|
[[0, 0, 3, ['the first']], |
|
|
[0, 0, 3, ['with a span.']]]], |
|
|
[[[0, 0, 5, ['Two body']], |
|
|
[0, 0, 5, ['rows,']]], |
|
|
[[0, 1, 6, ['the second with a span.']]]])], |
|
|
["""\ |
|
|
============ ============= |
|
|
A table with two head/body |
|
|
============ ============= |
|
|
row separators. |
|
|
============ ============= |
|
|
That's bad. |
|
|
============ ============= |
|
|
""", |
|
|
'TableMarkupError: Multiple head/body row separators ' |
|
|
'(table lines 3 and 5); only one allowed.'], |
|
|
["""\ |
|
|
============ ============ |
|
|
============ ============ |
|
|
""", |
|
|
([12, 12], |
|
|
[], |
|
|
[[[0, 0, 1, []], |
|
|
[0, 0, 1, []]]])], |
|
|
# ["""\ |
|
|
# ============== ========== |
|
|
# Table with row separators |
|
|
# ============== ========== |
|
|
# and blank |
|
|
# -------------- ---------- |
|
|
# entries |
|
|
# -------------- ---------- |
|
|
# in first |
|
|
# -------------- ---------- |
|
|
# columns. |
|
|
# ============== ========== |
|
|
# """, |
|
|
# ''] |
|
|
] |
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
import unittest |
|
|
unittest.main(defaultTest='suite')
|
|
|
|