xref: /dokuwiki/_test/tests/inc/parser/parser_table.test.php (revision e0328e30d24321e319e2733192bf829b9000c5eb)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
3f8369d7dSTobias Sarnowski
4f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Table extends TestOfDoku_Parser {
5f8369d7dSTobias Sarnowski
6f8369d7dSTobias Sarnowski    function testTable() {
7f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
8f8369d7dSTobias Sarnowski        $this->P->parse('
9f8369d7dSTobias Sarnowskiabc
10f8369d7dSTobias Sarnowski| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
11f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
12f8369d7dSTobias Sarnowskidef');
13f8369d7dSTobias Sarnowski        $calls = array (
14f8369d7dSTobias Sarnowski            array('document_start',array()),
15f8369d7dSTobias Sarnowski            array('p_open',array()),
16f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
17f8369d7dSTobias Sarnowski            array('p_close',array()),
18f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
19f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
20f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
21f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 1    ')),
22f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
23f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
24f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
25f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
26f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
27f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
28f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
29f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
30f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
31f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
32f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
33f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
34f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
35f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
36f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
37f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
38f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
39f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
40f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
41f8369d7dSTobias Sarnowski            array('table_close',array(121)),
42f8369d7dSTobias Sarnowski            array('p_open',array()),
43f8369d7dSTobias Sarnowski            array('cdata',array('def')),
44f8369d7dSTobias Sarnowski            array('p_close',array()),
45f8369d7dSTobias Sarnowski            array('document_end',array()),
46f8369d7dSTobias Sarnowski        );
47*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
48f8369d7dSTobias Sarnowski    }
49f8369d7dSTobias Sarnowski
50f8369d7dSTobias Sarnowski    function testTableWinEOL() {
51f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
52f8369d7dSTobias Sarnowski        $this->P->parse("\r\nabc\r\n| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |\r\n| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |\r\ndef");
53f8369d7dSTobias Sarnowski        $calls = array (
54f8369d7dSTobias Sarnowski            array('document_start',array()),
55f8369d7dSTobias Sarnowski            array('p_open',array()),
56f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
57f8369d7dSTobias Sarnowski            array('p_close',array()),
58f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
59f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
60f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
61f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 1    ')),
62f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
63f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
64f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
65f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
66f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
67f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
68f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
69f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
70f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
71f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
72f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
73f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
74f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
75f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
76f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
77f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
78f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
79f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
80f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
81f8369d7dSTobias Sarnowski            array('table_close',array(121)),
82f8369d7dSTobias Sarnowski            array('p_open',array()),
83f8369d7dSTobias Sarnowski            array('cdata',array('def')),
84f8369d7dSTobias Sarnowski            array('p_close',array()),
85f8369d7dSTobias Sarnowski            array('document_end',array()),
86f8369d7dSTobias Sarnowski        );
87*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
88f8369d7dSTobias Sarnowski    }
89f8369d7dSTobias Sarnowski
90f8369d7dSTobias Sarnowski    function testEmptyTable() {
91f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
92f8369d7dSTobias Sarnowski        $this->P->parse('
93f8369d7dSTobias Sarnowskiabc
94f8369d7dSTobias Sarnowski|
95f8369d7dSTobias Sarnowskidef');
96f8369d7dSTobias Sarnowski
97f8369d7dSTobias Sarnowski        $calls = array (
98f8369d7dSTobias Sarnowski            array('document_start',array()),
99f8369d7dSTobias Sarnowski            array('p_open',array()),
100f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
101f8369d7dSTobias Sarnowski            array('p_close',array()),
102f8369d7dSTobias Sarnowski            array('table_open',array(0, 1, 6)),
103f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
104f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
105f8369d7dSTobias Sarnowski            array('table_close',array(7)),
106f8369d7dSTobias Sarnowski            array('p_open',array()),
107f8369d7dSTobias Sarnowski            array('cdata',array('def')),
108f8369d7dSTobias Sarnowski            array('p_close',array()),
109f8369d7dSTobias Sarnowski            array('document_end',array()),
110f8369d7dSTobias Sarnowski        );
111f8369d7dSTobias Sarnowski
112*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
113f8369d7dSTobias Sarnowski    }
114f8369d7dSTobias Sarnowski
115f8369d7dSTobias Sarnowski    function testTableHeaders() {
116f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
117f8369d7dSTobias Sarnowski        $this->P->parse('
118f8369d7dSTobias Sarnowskiabc
119f8369d7dSTobias Sarnowski^ X | Y ^ Z |
120f8369d7dSTobias Sarnowskidef');
121f8369d7dSTobias Sarnowski
122f8369d7dSTobias Sarnowski        $calls = array (
123f8369d7dSTobias Sarnowski            array('document_start',array()),
124f8369d7dSTobias Sarnowski            array('p_open',array()),
125f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
126f8369d7dSTobias Sarnowski            array('p_close',array()),
127f8369d7dSTobias Sarnowski            array('table_open',array(3, 1, 6)),
128f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
129f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,NULL,1)),
130f8369d7dSTobias Sarnowski            array('cdata',array(' X ')),
131f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
132f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
133f8369d7dSTobias Sarnowski            array('cdata',array(' Y ')),
134f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
135f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,NULL,1)),
136f8369d7dSTobias Sarnowski            array('cdata',array(' Z ')),
137f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
138f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
139688ce8d8SChristopher Smith            array('table_close',array(19)),
140688ce8d8SChristopher Smith            array('p_open',array()),
141688ce8d8SChristopher Smith            array('cdata',array('def')),
142688ce8d8SChristopher Smith            array('p_close',array()),
143688ce8d8SChristopher Smith            array('document_end',array()),
144688ce8d8SChristopher Smith        );
145688ce8d8SChristopher Smith
146688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
147688ce8d8SChristopher Smith
148688ce8d8SChristopher Smith    }
149688ce8d8SChristopher Smith
150688ce8d8SChristopher Smith    function testTableHead() {
151688ce8d8SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
152688ce8d8SChristopher Smith        $this->P->parse('
153688ce8d8SChristopher Smithabc
154688ce8d8SChristopher Smith^ X ^ Y ^ Z ^
155688ce8d8SChristopher Smithdef');
156688ce8d8SChristopher Smith
157688ce8d8SChristopher Smith        $calls = array (
158688ce8d8SChristopher Smith            array('document_start',array()),
159688ce8d8SChristopher Smith            array('p_open',array()),
160688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
161688ce8d8SChristopher Smith            array('p_close',array()),
162688ce8d8SChristopher Smith            array('table_open',array(3, 1, 6)),
163688ce8d8SChristopher Smith            array('tablethead_open',array()),
164688ce8d8SChristopher Smith            array('tablerow_open',array()),
165688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
166688ce8d8SChristopher Smith            array('cdata',array(' X ')),
167688ce8d8SChristopher Smith            array('tableheader_close',array()),
168688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
169688ce8d8SChristopher Smith            array('cdata',array(' Y ')),
170688ce8d8SChristopher Smith            array('tableheader_close',array()),
171688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
172688ce8d8SChristopher Smith            array('cdata',array(' Z ')),
173688ce8d8SChristopher Smith            array('tableheader_close',array()),
174688ce8d8SChristopher Smith            array('tablerow_close',array()),
175f05a1cc5SGerrit Uitslag            array('tablethead_close',array()),
176f8369d7dSTobias Sarnowski            array('table_close',array(19)),
177f8369d7dSTobias Sarnowski            array('p_open',array()),
178f8369d7dSTobias Sarnowski            array('cdata',array('def')),
179f8369d7dSTobias Sarnowski            array('p_close',array()),
180f8369d7dSTobias Sarnowski            array('document_end',array()),
181f8369d7dSTobias Sarnowski        );
182f8369d7dSTobias Sarnowski
183688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
184f8369d7dSTobias Sarnowski
185f8369d7dSTobias Sarnowski    }
186f8369d7dSTobias Sarnowski
187688ce8d8SChristopher Smith    function testTableHeadMultiline() {
188f05a1cc5SGerrit Uitslag        $this->P->addMode('table',new Doku_Parser_Mode_Table());
189f05a1cc5SGerrit Uitslag        $this->P->parse('
190f05a1cc5SGerrit Uitslagabc
191688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
192688ce8d8SChristopher Smith^ X2 ^ Y2 ^ Z2 ^
193f05a1cc5SGerrit Uitslag| A | B | C |
194f05a1cc5SGerrit Uitslagdef');
195f05a1cc5SGerrit Uitslag
196f05a1cc5SGerrit Uitslag        $calls = array (
197f05a1cc5SGerrit Uitslag            array('document_start',array()),
198f05a1cc5SGerrit Uitslag            array('p_open',array()),
199f05a1cc5SGerrit Uitslag            array('cdata',array("\n\nabc")),
200f05a1cc5SGerrit Uitslag            array('p_close',array()),
201688ce8d8SChristopher Smith            array('table_open',array(3, 3, 6)),
202f05a1cc5SGerrit Uitslag            array('tablethead_open',array()),
203f05a1cc5SGerrit Uitslag            array('tablerow_open',array()),
204f05a1cc5SGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
205688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
206f05a1cc5SGerrit Uitslag            array('tableheader_close',array()),
207f05a1cc5SGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
208688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
209688ce8d8SChristopher Smith            array('tableheader_close',array()),
210688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
211688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
212688ce8d8SChristopher Smith            array('tableheader_close',array()),
213688ce8d8SChristopher Smith            array('tablerow_close',array()),
214688ce8d8SChristopher Smith            array('tablerow_open',array()),
215688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
216688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
217688ce8d8SChristopher Smith            array('tableheader_close',array()),
218688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
219688ce8d8SChristopher Smith            array('cdata',array(' Y2 ')),
220688ce8d8SChristopher Smith            array('tableheader_close',array()),
221688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
222688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
223f05a1cc5SGerrit Uitslag            array('tableheader_close',array()),
224f05a1cc5SGerrit Uitslag            array('tablerow_close',array()),
225f05a1cc5SGerrit Uitslag            array('tablethead_close',array()),
226f05a1cc5SGerrit Uitslag            array('tablerow_open',array()),
227f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
228f05a1cc5SGerrit Uitslag            array('cdata',array(' A ')),
229f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
230f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
231f05a1cc5SGerrit Uitslag            array('cdata',array(' B ')),
232f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
233f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
234f05a1cc5SGerrit Uitslag            array('cdata',array(' C ')),
235f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
236f05a1cc5SGerrit Uitslag            array('tablerow_close',array()),
237688ce8d8SChristopher Smith            array('table_close',array(53)),
238f05a1cc5SGerrit Uitslag            array('p_open',array()),
239f05a1cc5SGerrit Uitslag            array('cdata',array('def')),
240f05a1cc5SGerrit Uitslag            array('p_close',array()),
241f05a1cc5SGerrit Uitslag            array('document_end',array()),
242f05a1cc5SGerrit Uitslag        );
243f05a1cc5SGerrit Uitslag
244688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
245f05a1cc5SGerrit Uitslag
246f05a1cc5SGerrit Uitslag    }
247f05a1cc5SGerrit Uitslag
248f8369d7dSTobias Sarnowski    function testCellAlignment() {
249f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
250f8369d7dSTobias Sarnowski        $this->P->parse('
251f8369d7dSTobias Sarnowskiabc
252f8369d7dSTobias Sarnowski|  X | Y  ^  Z  |
253f8369d7dSTobias Sarnowskidef');
254f8369d7dSTobias Sarnowski
255f8369d7dSTobias Sarnowski        $calls = array (
256f8369d7dSTobias Sarnowski            array('document_start',array()),
257f8369d7dSTobias Sarnowski            array('p_open',array()),
258f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
259f8369d7dSTobias Sarnowski            array('p_close',array()),
260f8369d7dSTobias Sarnowski            array('table_open',array(3, 1, 6)),
261f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
262f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'right',1)),
263f8369d7dSTobias Sarnowski            array('cdata',array('  X ')),
264f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
265f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
266f8369d7dSTobias Sarnowski            array('cdata',array(' Y  ')),
267f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
268f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'center',1)),
269f8369d7dSTobias Sarnowski            array('cdata',array('  Z  ')),
270f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
271f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
272f8369d7dSTobias Sarnowski            array('table_close',array(23)),
273f8369d7dSTobias Sarnowski            array('p_open',array()),
274f8369d7dSTobias Sarnowski            array('cdata',array('def')),
275f8369d7dSTobias Sarnowski            array('p_close',array()),
276f8369d7dSTobias Sarnowski            array('document_end',array()),
277f8369d7dSTobias Sarnowski        );
278f8369d7dSTobias Sarnowski
279*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
280f8369d7dSTobias Sarnowski    }
281f8369d7dSTobias Sarnowski
282f8369d7dSTobias Sarnowski    function testCellSpan() {
283f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
284f8369d7dSTobias Sarnowski        $this->P->parse('
285f8369d7dSTobias Sarnowskiabc
286f8369d7dSTobias Sarnowski|  d || e |
287f8369d7dSTobias Sarnowski| f ^ ^|
288f8369d7dSTobias Sarnowski||||
289f8369d7dSTobias Sarnowskidef');
290f8369d7dSTobias Sarnowski
291f8369d7dSTobias Sarnowski        $calls = array (
292f8369d7dSTobias Sarnowski            array('document_start',array()),
293f8369d7dSTobias Sarnowski            array('p_open',array()),
294f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
295f8369d7dSTobias Sarnowski            array('p_close',array()),
296f8369d7dSTobias Sarnowski            array('table_open',array(3, 3, 6)),
297f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
298f8369d7dSTobias Sarnowski            array('tablecell_open',array(2,'right',1)),
299f8369d7dSTobias Sarnowski            array('cdata',array('  d ')),
300f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
301f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
302f8369d7dSTobias Sarnowski            array('cdata',array(' e ')),
303f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
304f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
305f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
306f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
307f8369d7dSTobias Sarnowski            array('cdata',array(' f ')),
308f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
309f8369d7dSTobias Sarnowski            array('tableheader_open',array(2,NULL,1)),
310f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
311f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
312f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
313f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
314f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
315f8369d7dSTobias Sarnowski            array('table_close',array(31)),
316f8369d7dSTobias Sarnowski            array('p_open',array()),
317f8369d7dSTobias Sarnowski            array('cdata',array('def')),
318f8369d7dSTobias Sarnowski            array('p_close',array()),
319f8369d7dSTobias Sarnowski            array('document_end',array()),
320f8369d7dSTobias Sarnowski        );
321*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
322f8369d7dSTobias Sarnowski    }
323f8369d7dSTobias Sarnowski
324f8369d7dSTobias Sarnowski    function testCellRowSpan() {
325f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
326f8369d7dSTobias Sarnowski        $this->P->parse('
327f8369d7dSTobias Sarnowskiabc
328f8369d7dSTobias Sarnowski| a |  c:::||
329f8369d7dSTobias Sarnowski|:::^ d  | e|
330f8369d7dSTobias Sarnowski|b  ^  ::: |:::f|
331f8369d7dSTobias Sarnowskidef');
332f8369d7dSTobias Sarnowski
333f8369d7dSTobias Sarnowski        $calls = array (
334f8369d7dSTobias Sarnowski            array('document_start',array()),
335f8369d7dSTobias Sarnowski            array('p_open',array()),
336f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
337f8369d7dSTobias Sarnowski            array('p_close',array()),
338f8369d7dSTobias Sarnowski            array('table_open',array(3, 3, 6)),
339f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
340f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,2)),
341f8369d7dSTobias Sarnowski            array('cdata',array(' a ')),
342f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
343f8369d7dSTobias Sarnowski            array('tablecell_open',array(2,'right',1)),
344f8369d7dSTobias Sarnowski            array('cdata',array('  c:::')),
345f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
346f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
347f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
348f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'left',2)),
349f8369d7dSTobias Sarnowski            array('cdata',array(' d  ')),
350f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
351f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
352f8369d7dSTobias Sarnowski            array('cdata',array(' e')),
353f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
354f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
355f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
356f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
357f8369d7dSTobias Sarnowski            array('cdata',array('b  ')),
358f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
359f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
360f8369d7dSTobias Sarnowski            array('cdata',array(':::f')),
361f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
362f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
363f8369d7dSTobias Sarnowski            array('table_close',array(51)),
364f8369d7dSTobias Sarnowski            array('p_open',array()),
365f8369d7dSTobias Sarnowski            array('cdata',array('def')),
366f8369d7dSTobias Sarnowski            array('p_close',array()),
367f8369d7dSTobias Sarnowski            array('document_end',array()),
368f8369d7dSTobias Sarnowski        );
369*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
370f8369d7dSTobias Sarnowski    }
3710d9a72ffSGerrit Uitslag
3720d9a72ffSGerrit Uitslag    function testCellRowSpanFirstRow() {
3730d9a72ffSGerrit Uitslag        $this->P->addMode('table',new Doku_Parser_Mode_Table());
3740d9a72ffSGerrit Uitslag        $this->P->parse('
3750d9a72ffSGerrit Uitslagabc
3760d9a72ffSGerrit Uitslag|::: ^  d:::^:::|  :::  |
3770d9a72ffSGerrit Uitslag| b ^ e  | | ::: |
3780d9a72ffSGerrit Uitslag|c  ^  ::: | |:::|
3790d9a72ffSGerrit Uitslagdef');
3800d9a72ffSGerrit Uitslag
3810d9a72ffSGerrit Uitslag        $calls = array (
3820d9a72ffSGerrit Uitslag            array('document_start',array()),
3830d9a72ffSGerrit Uitslag            array('p_open',array()),
3840d9a72ffSGerrit Uitslag            array('cdata',array("\n\nabc")),
3850d9a72ffSGerrit Uitslag            array('p_close',array()),
3860d9a72ffSGerrit Uitslag            array('table_open',array(4, 3, 6)),
3870d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
3880d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
3890d9a72ffSGerrit Uitslag            array('cdata',array('')),
3900d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
3910d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,'right',1)),
3920d9a72ffSGerrit Uitslag            array('cdata',array('  d:::')),
3930d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
3940d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
3950d9a72ffSGerrit Uitslag            array('cdata',array('')),
3960d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
3970d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,3)),
3980d9a72ffSGerrit Uitslag            array('cdata',array('')),
3990d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4000d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4010d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
4020d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4030d9a72ffSGerrit Uitslag            array('cdata',array(' b ')),
4040d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4050d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,'left',2)),
4060d9a72ffSGerrit Uitslag            array('cdata',array(' e  ')),
4070d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
4080d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4090d9a72ffSGerrit Uitslag            array('cdata',array(' ')),
4100d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4110d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4120d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
4130d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,'left',1)),
4140d9a72ffSGerrit Uitslag            array('cdata',array('c  ')),
4150d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4160d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4170d9a72ffSGerrit Uitslag            array('cdata',array(' ')),
4180d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4190d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4200d9a72ffSGerrit Uitslag
4210d9a72ffSGerrit Uitslag            array('table_close',array(69)),
4220d9a72ffSGerrit Uitslag            array('p_open',array()),
4230d9a72ffSGerrit Uitslag            array('cdata',array('def')),
4240d9a72ffSGerrit Uitslag            array('p_close',array()),
4250d9a72ffSGerrit Uitslag            array('document_end',array()),
4260d9a72ffSGerrit Uitslag        );
427*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
4280d9a72ffSGerrit Uitslag    }
429f8369d7dSTobias Sarnowski
430688ce8d8SChristopher Smith    function testRowSpanTableHead() {
431688ce8d8SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
432688ce8d8SChristopher Smith        $this->P->parse('
433688ce8d8SChristopher Smithabc
434688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
435688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^
436688ce8d8SChristopher Smith| A3 | B3 | C3 |
437688ce8d8SChristopher Smithdef');
438688ce8d8SChristopher Smith
439688ce8d8SChristopher Smith        $calls = array (
440688ce8d8SChristopher Smith            array('document_start',array()),
441688ce8d8SChristopher Smith            array('p_open',array()),
442688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
443688ce8d8SChristopher Smith            array('p_close',array()),
444688ce8d8SChristopher Smith            array('table_open',array(3, 3, 6)),
445688ce8d8SChristopher Smith            array('tablethead_open',array()),
446688ce8d8SChristopher Smith            array('tablerow_open',array()),
447688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
448688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
449688ce8d8SChristopher Smith            array('tableheader_close',array()),
450688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,2)),
451688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
452688ce8d8SChristopher Smith            array('tableheader_close',array()),
453688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
454688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
455688ce8d8SChristopher Smith            array('tableheader_close',array()),
456688ce8d8SChristopher Smith            array('tablerow_close',array()),
457688ce8d8SChristopher Smith            array('tablerow_open',array()),
458688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
459688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
460688ce8d8SChristopher Smith            array('tableheader_close',array()),
461688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
462688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
463688ce8d8SChristopher Smith            array('tableheader_close',array()),
464688ce8d8SChristopher Smith            array('tablerow_close',array()),
465688ce8d8SChristopher Smith            array('tablethead_close',array()),
466688ce8d8SChristopher Smith            array('tablerow_open',array()),
467688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
468688ce8d8SChristopher Smith            array('cdata',array(' A3 ')),
469688ce8d8SChristopher Smith            array('tablecell_close',array()),
470688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
471688ce8d8SChristopher Smith            array('cdata',array(' B3 ')),
472688ce8d8SChristopher Smith            array('tablecell_close',array()),
473688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
474688ce8d8SChristopher Smith            array('cdata',array(' C3 ')),
475688ce8d8SChristopher Smith            array('tablecell_close',array()),
476688ce8d8SChristopher Smith            array('tablerow_close',array()),
477688ce8d8SChristopher Smith            array('table_close',array(57)),
478688ce8d8SChristopher Smith            array('p_open',array()),
479688ce8d8SChristopher Smith            array('cdata',array('def')),
480688ce8d8SChristopher Smith            array('p_close',array()),
481688ce8d8SChristopher Smith            array('document_end',array()),
482688ce8d8SChristopher Smith        );
483688ce8d8SChristopher Smith
484688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
485688ce8d8SChristopher Smith
486688ce8d8SChristopher Smith    }
487688ce8d8SChristopher Smith
488688ce8d8SChristopher Smith    function testRowSpanAcrossTableHeadBoundary() {
489688ce8d8SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
490688ce8d8SChristopher Smith        $this->P->parse('
491688ce8d8SChristopher Smithabc
492688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
493688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^
494688ce8d8SChristopher Smith| A3 | ::: | C3 |
495688ce8d8SChristopher Smith| A4 | ::: | C4 |
496688ce8d8SChristopher Smithdef');
497688ce8d8SChristopher Smith
498688ce8d8SChristopher Smith        $calls = array (
499688ce8d8SChristopher Smith            array('document_start',array()),
500688ce8d8SChristopher Smith            array('p_open',array()),
501688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
502688ce8d8SChristopher Smith            array('p_close',array()),
503688ce8d8SChristopher Smith            array('table_open',array(3, 4, 6)),
504688ce8d8SChristopher Smith            array('tablethead_open',array()),
505688ce8d8SChristopher Smith            array('tablerow_open',array()),
506688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
507688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
508688ce8d8SChristopher Smith            array('tableheader_close',array()),
509688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,2)),
510688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
511688ce8d8SChristopher Smith            array('tableheader_close',array()),
512688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
513688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
514688ce8d8SChristopher Smith            array('tableheader_close',array()),
515688ce8d8SChristopher Smith            array('tablerow_close',array()),
516688ce8d8SChristopher Smith            array('tablerow_open',array()),
517688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
518688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
519688ce8d8SChristopher Smith            array('tableheader_close',array()),
520688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
521688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
522688ce8d8SChristopher Smith            array('tableheader_close',array()),
523688ce8d8SChristopher Smith            array('tablerow_close',array()),
524688ce8d8SChristopher Smith            array('tablethead_close',array()),
525688ce8d8SChristopher Smith            array('tablerow_open',array()),
526688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
527688ce8d8SChristopher Smith            array('cdata',array(' A3 ')),
528688ce8d8SChristopher Smith            array('tablecell_close',array()),
529688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,2)),
530688ce8d8SChristopher Smith            array('cdata',array('')),
531688ce8d8SChristopher Smith            array('tablecell_close',array()),
532688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
533688ce8d8SChristopher Smith            array('cdata',array(' C3 ')),
534688ce8d8SChristopher Smith            array('tablecell_close',array()),
535688ce8d8SChristopher Smith            array('tablerow_close',array()),
536688ce8d8SChristopher Smith            array('tablerow_open',array()),
537688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
538688ce8d8SChristopher Smith            array('cdata',array(' A4 ')),
539688ce8d8SChristopher Smith            array('tablecell_close',array()),
540688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
541688ce8d8SChristopher Smith            array('cdata',array(' C4 ')),
542688ce8d8SChristopher Smith            array('tablecell_close',array()),
543688ce8d8SChristopher Smith            array('tablerow_close',array()),
544688ce8d8SChristopher Smith            array('table_close',array(76)),
545688ce8d8SChristopher Smith            array('p_open',array()),
546688ce8d8SChristopher Smith            array('cdata',array('def')),
547688ce8d8SChristopher Smith            array('p_close',array()),
548688ce8d8SChristopher Smith            array('document_end',array()),
549688ce8d8SChristopher Smith        );
550688ce8d8SChristopher Smith
551688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
552688ce8d8SChristopher Smith
553688ce8d8SChristopher Smith    }
554688ce8d8SChristopher Smith
555f8369d7dSTobias Sarnowski    function testCellAlignmentFormatting() {
556f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
557f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
558f8369d7dSTobias Sarnowski        $this->P->parse('
559f8369d7dSTobias Sarnowskiabc
560f8369d7dSTobias Sarnowski|  **X** | Y  ^  Z  |
561f8369d7dSTobias Sarnowskidef');
562f8369d7dSTobias Sarnowski
563f8369d7dSTobias Sarnowski        $calls = array (
564f8369d7dSTobias Sarnowski            array('document_start',array()),
565f8369d7dSTobias Sarnowski            array('p_open',array()),
566f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
567f8369d7dSTobias Sarnowski            array('p_close',array()),
568f8369d7dSTobias Sarnowski            array('table_open',array(3, 1, 6)),
569f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
570f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'right',1)),
571f8369d7dSTobias Sarnowski            array('cdata',array('  ')),
572f8369d7dSTobias Sarnowski            array('strong_open',array()),
573f8369d7dSTobias Sarnowski            array('cdata',array('X')),
574f8369d7dSTobias Sarnowski            array('strong_close',array()),
575f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
576f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
577f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
578f8369d7dSTobias Sarnowski            array('cdata',array(' Y  ')),
579f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
580f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'center',1)),
581f8369d7dSTobias Sarnowski            array('cdata',array('  Z  ')),
582f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
583f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
584f8369d7dSTobias Sarnowski            array('table_close',array(27)),
585f8369d7dSTobias Sarnowski            array('p_open',array()),
586f8369d7dSTobias Sarnowski            array('cdata',array('def')),
587f8369d7dSTobias Sarnowski            array('p_close',array()),
588f8369d7dSTobias Sarnowski            array('document_end',array()),
589f8369d7dSTobias Sarnowski        );
590f8369d7dSTobias Sarnowski
591*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
592f8369d7dSTobias Sarnowski
593f8369d7dSTobias Sarnowski    }
594f8369d7dSTobias Sarnowski
595f8369d7dSTobias Sarnowski    function testTableEol() {
596f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
597f8369d7dSTobias Sarnowski        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
598f8369d7dSTobias Sarnowski        $this->P->parse('
599f8369d7dSTobias Sarnowskiabc
600f8369d7dSTobias Sarnowski| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
601f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
602f8369d7dSTobias Sarnowskidef');
603f8369d7dSTobias Sarnowski        $calls = array (
604f8369d7dSTobias Sarnowski            array('document_start',array()),
605f8369d7dSTobias Sarnowski            array('p_open',array()),
606f8369d7dSTobias Sarnowski            array('cdata',array("abc")),
607f8369d7dSTobias Sarnowski            array('p_close',array()),
608f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
609f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
610f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
611f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 1    ')),
612f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
613f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
614f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
615f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
616f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
617f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
618f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
619f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
620f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
621f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
622f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
623f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
624f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
625f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
626f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
627f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
628f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
629f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
630f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
631f8369d7dSTobias Sarnowski            array('table_close',array(121)),
632f8369d7dSTobias Sarnowski            array('p_open',array()),
633f8369d7dSTobias Sarnowski            array('cdata',array('def')),
634f8369d7dSTobias Sarnowski            array('p_close',array()),
635f8369d7dSTobias Sarnowski            array('document_end',array()),
636f8369d7dSTobias Sarnowski        );
637*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
638f8369d7dSTobias Sarnowski    }
639f8369d7dSTobias Sarnowski
640f8369d7dSTobias Sarnowski    // This is really a failing test - formatting able to spread across cols
641f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
642f8369d7dSTobias Sarnowski    function testTableStrong() {
643f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
644f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
645f8369d7dSTobias Sarnowski        $this->P->parse('
646f8369d7dSTobias Sarnowskiabc
647f8369d7dSTobias Sarnowski| **Row 0 Col 1**    | **Row 0 Col 2     | Row 0 Col 3**        |
648f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
649f8369d7dSTobias Sarnowskidef');
650f8369d7dSTobias Sarnowski        $calls = array (
651f8369d7dSTobias Sarnowski            array('document_start',array()),
652f8369d7dSTobias Sarnowski            array('p_open',array()),
653f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
654f8369d7dSTobias Sarnowski            array('p_close',array()),
655f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
656f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
657f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
658f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
659f8369d7dSTobias Sarnowski            array('strong_open',array()),
660f8369d7dSTobias Sarnowski            array('cdata',array('Row 0 Col 1')),
661f8369d7dSTobias Sarnowski            array('strong_close',array()),
662f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
663f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
664f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
665f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
666f8369d7dSTobias Sarnowski            array('strong_open',array()),
667f8369d7dSTobias Sarnowski            array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
668f8369d7dSTobias Sarnowski            array('strong_close',array()),
669f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
670f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
671f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
672f8369d7dSTobias Sarnowski            array('cdata',array('')),
673f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
674f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
675f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
676f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
677f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
678f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
679f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
680f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
681f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
682f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
683f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
684f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
685f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
686f8369d7dSTobias Sarnowski            array('table_close',array(129)),
687f8369d7dSTobias Sarnowski            array('p_open',array()),
688f8369d7dSTobias Sarnowski            array('cdata',array('def')),
689f8369d7dSTobias Sarnowski            array('p_close',array()),
690f8369d7dSTobias Sarnowski            array('document_end',array()),
691f8369d7dSTobias Sarnowski        );
692*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
693f8369d7dSTobias Sarnowski    }
694f8369d7dSTobias Sarnowski
695f8369d7dSTobias Sarnowski    // This is really a failing test - unformatted able to spread across cols
696f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
697f8369d7dSTobias Sarnowski    function testTableUnformatted() {
698f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
699f8369d7dSTobias Sarnowski        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
700f8369d7dSTobias Sarnowski        $this->P->parse('
701f8369d7dSTobias Sarnowskiabc
702f8369d7dSTobias Sarnowski| <nowiki>Row 0 Col 1</nowiki>    | <nowiki>Row 0 Col 2     | Row 0 Col 3</nowiki>        |
703f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
704f8369d7dSTobias Sarnowskidef');
705f8369d7dSTobias Sarnowski        $calls = array (
706f8369d7dSTobias Sarnowski            array('document_start',array()),
707f8369d7dSTobias Sarnowski            array('p_open',array()),
708f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
709f8369d7dSTobias Sarnowski            array('p_close',array()),
710f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
711f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
712f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
713f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
714f8369d7dSTobias Sarnowski            array('unformatted',array('Row 0 Col 1')),
715f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
716f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
717f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
718f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
719f8369d7dSTobias Sarnowski            array('unformatted',array('Row 0 Col 2     | Row 0 Col 3')),
720f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
721f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
722f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
723f8369d7dSTobias Sarnowski            array('cdata',array('')),
724f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
725f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
726f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
727f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
728f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
729f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
730f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
731f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
732f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
733f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
734f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
735f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
736f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
737f8369d7dSTobias Sarnowski            array('table_close',array(155)),
738f8369d7dSTobias Sarnowski            array('p_open',array()),
739f8369d7dSTobias Sarnowski            array('cdata',array('def')),
740f8369d7dSTobias Sarnowski            array('p_close',array()),
741f8369d7dSTobias Sarnowski            array('document_end',array()),
742f8369d7dSTobias Sarnowski        );
743*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
744f8369d7dSTobias Sarnowski    }
745f8369d7dSTobias Sarnowski
746f8369d7dSTobias Sarnowski    function testTableLinebreak() {
747f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
748f8369d7dSTobias Sarnowski        $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
749f8369d7dSTobias Sarnowski        $this->P->parse('
750f8369d7dSTobias Sarnowskiabc
751f8369d7dSTobias Sarnowski| Row 0\\\\ Col 1    | Row 0 Col 2     | Row 0 Col 3        |
752f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
753f8369d7dSTobias Sarnowskidef');
754f8369d7dSTobias Sarnowski        $calls = array (
755f8369d7dSTobias Sarnowski            array('document_start',array()),
756f8369d7dSTobias Sarnowski            array('p_open',array()),
757f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
758f8369d7dSTobias Sarnowski            array('p_close',array()),
759f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
760f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
761f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
762f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0')),
763f8369d7dSTobias Sarnowski            array('linebreak',array()),
764f8369d7dSTobias Sarnowski            array('cdata',array('Col 1    ')),
765f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
766f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
767f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
768f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
769f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
770f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
771f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
772f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
773f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
774f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
775f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
776f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
777f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
778f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
779f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
780f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
781f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
782f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
783f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
784f8369d7dSTobias Sarnowski            array('table_close',array(123)),
785f8369d7dSTobias Sarnowski            array('p_open',array()),
786f8369d7dSTobias Sarnowski            array('cdata',array('def')),
787f8369d7dSTobias Sarnowski            array('p_close',array()),
788f8369d7dSTobias Sarnowski            array('document_end',array()),
789f8369d7dSTobias Sarnowski        );
790f8369d7dSTobias Sarnowski
791*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
792f8369d7dSTobias Sarnowski    }
793f8369d7dSTobias Sarnowski
794f8369d7dSTobias Sarnowski    // This is really a failing test - footnote able to spread across cols
795f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
796f8369d7dSTobias Sarnowski    function testTableFootnote() {
797f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
798f8369d7dSTobias Sarnowski        $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote());
799f8369d7dSTobias Sarnowski        $this->P->parse('
800f8369d7dSTobias Sarnowskiabc
801f8369d7dSTobias Sarnowski| ((Row 0 Col 1))    | ((Row 0 Col 2     | Row 0 Col 3))        |
802f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
803f8369d7dSTobias Sarnowskidef');
804f8369d7dSTobias Sarnowski        $calls = array (
805f8369d7dSTobias Sarnowski            array('document_start',array()),
806f8369d7dSTobias Sarnowski            array('p_open',array()),
807f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
808f8369d7dSTobias Sarnowski            array('p_close',array()),
809f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
810f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
811f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
812f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
813f8369d7dSTobias Sarnowski            array('nest', array ( array (
814f8369d7dSTobias Sarnowski              array('footnote_open',array()),
815f8369d7dSTobias Sarnowski              array('cdata',array('Row 0 Col 1')),
816f8369d7dSTobias Sarnowski              array('footnote_close',array()),
817f8369d7dSTobias Sarnowski            ))),
818f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
819f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
820f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
821f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
822f8369d7dSTobias Sarnowski            array('nest', array ( array (
823f8369d7dSTobias Sarnowski              array('footnote_open',array()),
824f8369d7dSTobias Sarnowski              array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
825f8369d7dSTobias Sarnowski              array('footnote_close',array()),
826f8369d7dSTobias Sarnowski            ))),
827f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
828f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
829f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
830f8369d7dSTobias Sarnowski            array('cdata',array('')),
831f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
832f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
833f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
834f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
835f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
836f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
837f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
838f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
839f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
840f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
841f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
842f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
843f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
844f8369d7dSTobias Sarnowski            array('table_close',array(129)),
845f8369d7dSTobias Sarnowski            array('p_open',array()),
846f8369d7dSTobias Sarnowski            array('cdata',array('def')),
847f8369d7dSTobias Sarnowski            array('p_close',array()),
848f8369d7dSTobias Sarnowski            array('document_end',array()),
849f8369d7dSTobias Sarnowski        );
850*e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
851f8369d7dSTobias Sarnowski    }
852f8369d7dSTobias Sarnowski}
853