xref: /dokuwiki/_test/tests/inc/parser/parser_table.test.php (revision c2a1d01e2e905ab3d7fa3009aeb140fcefc32f9e)
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        );
47e0328e30SChristopher 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        );
87e0328e30SChristopher 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
112e0328e30SChristopher 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 ^
155*c2a1d01eSChristopher Smith| x | y | z |
156688ce8d8SChristopher Smithdef');
157688ce8d8SChristopher Smith
158688ce8d8SChristopher Smith        $calls = array (
159688ce8d8SChristopher Smith            array('document_start',array()),
160688ce8d8SChristopher Smith            array('p_open',array()),
161688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
162688ce8d8SChristopher Smith            array('p_close',array()),
163*c2a1d01eSChristopher Smith            array('table_open',array(3, 2, 6)),
164688ce8d8SChristopher Smith            array('tablethead_open',array()),
165688ce8d8SChristopher Smith            array('tablerow_open',array()),
166688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
167688ce8d8SChristopher Smith            array('cdata',array(' X ')),
168688ce8d8SChristopher Smith            array('tableheader_close',array()),
169688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
170688ce8d8SChristopher Smith            array('cdata',array(' Y ')),
171688ce8d8SChristopher Smith            array('tableheader_close',array()),
172688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
173688ce8d8SChristopher Smith            array('cdata',array(' Z ')),
174688ce8d8SChristopher Smith            array('tableheader_close',array()),
175688ce8d8SChristopher Smith            array('tablerow_close',array()),
176f05a1cc5SGerrit Uitslag            array('tablethead_close',array()),
177*c2a1d01eSChristopher Smith            array('tablerow_open',array()),
178*c2a1d01eSChristopher Smith            array('tablecell_open',array(1,NULL,1)),
179*c2a1d01eSChristopher Smith            array('cdata',array(' x ')),
180*c2a1d01eSChristopher Smith            array('tablecell_close',array()),
181*c2a1d01eSChristopher Smith            array('tablecell_open',array(1,NULL,1)),
182*c2a1d01eSChristopher Smith            array('cdata',array(' y ')),
183*c2a1d01eSChristopher Smith            array('tablecell_close',array()),
184*c2a1d01eSChristopher Smith            array('tablecell_open',array(1,NULL,1)),
185*c2a1d01eSChristopher Smith            array('cdata',array(' z ')),
186*c2a1d01eSChristopher Smith            array('tablecell_close',array()),
187*c2a1d01eSChristopher Smith            array('tablerow_close',array()),
188*c2a1d01eSChristopher Smith            array('table_close',array(33)),
189*c2a1d01eSChristopher Smith            array('p_open',array()),
190*c2a1d01eSChristopher Smith            array('cdata',array('def')),
191*c2a1d01eSChristopher Smith            array('p_close',array()),
192*c2a1d01eSChristopher Smith            array('document_end',array()),
193*c2a1d01eSChristopher Smith        );
194*c2a1d01eSChristopher Smith
195*c2a1d01eSChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
196*c2a1d01eSChristopher Smith
197*c2a1d01eSChristopher Smith    }
198*c2a1d01eSChristopher Smith
199*c2a1d01eSChristopher Smith    function testTableHeadOneRowTable() {
200*c2a1d01eSChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
201*c2a1d01eSChristopher Smith        $this->P->parse('
202*c2a1d01eSChristopher Smithabc
203*c2a1d01eSChristopher Smith^ X ^ Y ^ Z ^
204*c2a1d01eSChristopher Smithdef');
205*c2a1d01eSChristopher Smith
206*c2a1d01eSChristopher Smith        $calls = array (
207*c2a1d01eSChristopher Smith            array('document_start',array()),
208*c2a1d01eSChristopher Smith            array('p_open',array()),
209*c2a1d01eSChristopher Smith            array('cdata',array("\n\nabc")),
210*c2a1d01eSChristopher Smith            array('p_close',array()),
211*c2a1d01eSChristopher Smith            array('table_open',array(3, 1, 6)),
212*c2a1d01eSChristopher Smith            array('tablerow_open',array()),
213*c2a1d01eSChristopher Smith            array('tableheader_open',array(1,NULL,1)),
214*c2a1d01eSChristopher Smith            array('cdata',array(' X ')),
215*c2a1d01eSChristopher Smith            array('tableheader_close',array()),
216*c2a1d01eSChristopher Smith            array('tableheader_open',array(1,NULL,1)),
217*c2a1d01eSChristopher Smith            array('cdata',array(' Y ')),
218*c2a1d01eSChristopher Smith            array('tableheader_close',array()),
219*c2a1d01eSChristopher Smith            array('tableheader_open',array(1,NULL,1)),
220*c2a1d01eSChristopher Smith            array('cdata',array(' Z ')),
221*c2a1d01eSChristopher Smith            array('tableheader_close',array()),
222*c2a1d01eSChristopher Smith            array('tablerow_close',array()),
223f8369d7dSTobias Sarnowski            array('table_close',array(19)),
224f8369d7dSTobias Sarnowski            array('p_open',array()),
225f8369d7dSTobias Sarnowski            array('cdata',array('def')),
226f8369d7dSTobias Sarnowski            array('p_close',array()),
227f8369d7dSTobias Sarnowski            array('document_end',array()),
228f8369d7dSTobias Sarnowski        );
229f8369d7dSTobias Sarnowski
230688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
231f8369d7dSTobias Sarnowski
232f8369d7dSTobias Sarnowski    }
233f8369d7dSTobias Sarnowski
234688ce8d8SChristopher Smith    function testTableHeadMultiline() {
235f05a1cc5SGerrit Uitslag        $this->P->addMode('table',new Doku_Parser_Mode_Table());
236f05a1cc5SGerrit Uitslag        $this->P->parse('
237f05a1cc5SGerrit Uitslagabc
238688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
239688ce8d8SChristopher Smith^ X2 ^ Y2 ^ Z2 ^
240f05a1cc5SGerrit Uitslag| A | B | C |
241f05a1cc5SGerrit Uitslagdef');
242f05a1cc5SGerrit Uitslag
243f05a1cc5SGerrit Uitslag        $calls = array (
244f05a1cc5SGerrit Uitslag            array('document_start',array()),
245f05a1cc5SGerrit Uitslag            array('p_open',array()),
246f05a1cc5SGerrit Uitslag            array('cdata',array("\n\nabc")),
247f05a1cc5SGerrit Uitslag            array('p_close',array()),
248688ce8d8SChristopher Smith            array('table_open',array(3, 3, 6)),
249f05a1cc5SGerrit Uitslag            array('tablethead_open',array()),
250f05a1cc5SGerrit Uitslag            array('tablerow_open',array()),
251f05a1cc5SGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
252688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
253f05a1cc5SGerrit Uitslag            array('tableheader_close',array()),
254f05a1cc5SGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
255688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
256688ce8d8SChristopher Smith            array('tableheader_close',array()),
257688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
258688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
259688ce8d8SChristopher Smith            array('tableheader_close',array()),
260688ce8d8SChristopher Smith            array('tablerow_close',array()),
261688ce8d8SChristopher Smith            array('tablerow_open',array()),
262688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
263688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
264688ce8d8SChristopher Smith            array('tableheader_close',array()),
265688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
266688ce8d8SChristopher Smith            array('cdata',array(' Y2 ')),
267688ce8d8SChristopher Smith            array('tableheader_close',array()),
268688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
269688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
270f05a1cc5SGerrit Uitslag            array('tableheader_close',array()),
271f05a1cc5SGerrit Uitslag            array('tablerow_close',array()),
272f05a1cc5SGerrit Uitslag            array('tablethead_close',array()),
273f05a1cc5SGerrit Uitslag            array('tablerow_open',array()),
274f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
275f05a1cc5SGerrit Uitslag            array('cdata',array(' A ')),
276f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
277f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
278f05a1cc5SGerrit Uitslag            array('cdata',array(' B ')),
279f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
280f05a1cc5SGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
281f05a1cc5SGerrit Uitslag            array('cdata',array(' C ')),
282f05a1cc5SGerrit Uitslag            array('tablecell_close',array()),
283f05a1cc5SGerrit Uitslag            array('tablerow_close',array()),
284688ce8d8SChristopher Smith            array('table_close',array(53)),
285f05a1cc5SGerrit Uitslag            array('p_open',array()),
286f05a1cc5SGerrit Uitslag            array('cdata',array('def')),
287f05a1cc5SGerrit Uitslag            array('p_close',array()),
288f05a1cc5SGerrit Uitslag            array('document_end',array()),
289f05a1cc5SGerrit Uitslag        );
290f05a1cc5SGerrit Uitslag
291688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
292f05a1cc5SGerrit Uitslag
293f05a1cc5SGerrit Uitslag    }
294f05a1cc5SGerrit Uitslag
295f8369d7dSTobias Sarnowski    function testCellAlignment() {
296f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
297f8369d7dSTobias Sarnowski        $this->P->parse('
298f8369d7dSTobias Sarnowskiabc
299f8369d7dSTobias Sarnowski|  X | Y  ^  Z  |
300f8369d7dSTobias Sarnowskidef');
301f8369d7dSTobias Sarnowski
302f8369d7dSTobias Sarnowski        $calls = array (
303f8369d7dSTobias Sarnowski            array('document_start',array()),
304f8369d7dSTobias Sarnowski            array('p_open',array()),
305f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
306f8369d7dSTobias Sarnowski            array('p_close',array()),
307f8369d7dSTobias Sarnowski            array('table_open',array(3, 1, 6)),
308f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
309f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'right',1)),
310f8369d7dSTobias Sarnowski            array('cdata',array('  X ')),
311f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
312f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
313f8369d7dSTobias Sarnowski            array('cdata',array(' Y  ')),
314f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
315f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'center',1)),
316f8369d7dSTobias Sarnowski            array('cdata',array('  Z  ')),
317f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
318f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
319f8369d7dSTobias Sarnowski            array('table_close',array(23)),
320f8369d7dSTobias Sarnowski            array('p_open',array()),
321f8369d7dSTobias Sarnowski            array('cdata',array('def')),
322f8369d7dSTobias Sarnowski            array('p_close',array()),
323f8369d7dSTobias Sarnowski            array('document_end',array()),
324f8369d7dSTobias Sarnowski        );
325f8369d7dSTobias Sarnowski
326e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
327f8369d7dSTobias Sarnowski    }
328f8369d7dSTobias Sarnowski
329f8369d7dSTobias Sarnowski    function testCellSpan() {
330f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
331f8369d7dSTobias Sarnowski        $this->P->parse('
332f8369d7dSTobias Sarnowskiabc
333f8369d7dSTobias Sarnowski|  d || e |
334f8369d7dSTobias Sarnowski| f ^ ^|
335f8369d7dSTobias Sarnowski||||
336f8369d7dSTobias Sarnowskidef');
337f8369d7dSTobias Sarnowski
338f8369d7dSTobias Sarnowski        $calls = array (
339f8369d7dSTobias Sarnowski            array('document_start',array()),
340f8369d7dSTobias Sarnowski            array('p_open',array()),
341f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
342f8369d7dSTobias Sarnowski            array('p_close',array()),
343f8369d7dSTobias Sarnowski            array('table_open',array(3, 3, 6)),
344f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
345f8369d7dSTobias Sarnowski            array('tablecell_open',array(2,'right',1)),
346f8369d7dSTobias Sarnowski            array('cdata',array('  d ')),
347f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
348f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
349f8369d7dSTobias Sarnowski            array('cdata',array(' e ')),
350f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
351f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
352f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
353f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
354f8369d7dSTobias Sarnowski            array('cdata',array(' f ')),
355f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
356f8369d7dSTobias Sarnowski            array('tableheader_open',array(2,NULL,1)),
357f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
358f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
359f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
360f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
361f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
362f8369d7dSTobias Sarnowski            array('table_close',array(31)),
363f8369d7dSTobias Sarnowski            array('p_open',array()),
364f8369d7dSTobias Sarnowski            array('cdata',array('def')),
365f8369d7dSTobias Sarnowski            array('p_close',array()),
366f8369d7dSTobias Sarnowski            array('document_end',array()),
367f8369d7dSTobias Sarnowski        );
368e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
369f8369d7dSTobias Sarnowski    }
370f8369d7dSTobias Sarnowski
371f8369d7dSTobias Sarnowski    function testCellRowSpan() {
372f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
373f8369d7dSTobias Sarnowski        $this->P->parse('
374f8369d7dSTobias Sarnowskiabc
375f8369d7dSTobias Sarnowski| a |  c:::||
376f8369d7dSTobias Sarnowski|:::^ d  | e|
377f8369d7dSTobias Sarnowski|b  ^  ::: |:::f|
378f8369d7dSTobias Sarnowskidef');
379f8369d7dSTobias Sarnowski
380f8369d7dSTobias Sarnowski        $calls = array (
381f8369d7dSTobias Sarnowski            array('document_start',array()),
382f8369d7dSTobias Sarnowski            array('p_open',array()),
383f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
384f8369d7dSTobias Sarnowski            array('p_close',array()),
385f8369d7dSTobias Sarnowski            array('table_open',array(3, 3, 6)),
386f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
387f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,2)),
388f8369d7dSTobias Sarnowski            array('cdata',array(' a ')),
389f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
390f8369d7dSTobias Sarnowski            array('tablecell_open',array(2,'right',1)),
391f8369d7dSTobias Sarnowski            array('cdata',array('  c:::')),
392f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
393f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
394f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
395f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'left',2)),
396f8369d7dSTobias Sarnowski            array('cdata',array(' d  ')),
397f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
398f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
399f8369d7dSTobias Sarnowski            array('cdata',array(' e')),
400f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
401f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
402f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
403f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
404f8369d7dSTobias Sarnowski            array('cdata',array('b  ')),
405f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
406f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,NULL,1)),
407f8369d7dSTobias Sarnowski            array('cdata',array(':::f')),
408f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
409f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
410f8369d7dSTobias Sarnowski            array('table_close',array(51)),
411f8369d7dSTobias Sarnowski            array('p_open',array()),
412f8369d7dSTobias Sarnowski            array('cdata',array('def')),
413f8369d7dSTobias Sarnowski            array('p_close',array()),
414f8369d7dSTobias Sarnowski            array('document_end',array()),
415f8369d7dSTobias Sarnowski        );
416e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
417f8369d7dSTobias Sarnowski    }
4180d9a72ffSGerrit Uitslag
4190d9a72ffSGerrit Uitslag    function testCellRowSpanFirstRow() {
4200d9a72ffSGerrit Uitslag        $this->P->addMode('table',new Doku_Parser_Mode_Table());
4210d9a72ffSGerrit Uitslag        $this->P->parse('
4220d9a72ffSGerrit Uitslagabc
4230d9a72ffSGerrit Uitslag|::: ^  d:::^:::|  :::  |
4240d9a72ffSGerrit Uitslag| b ^ e  | | ::: |
4250d9a72ffSGerrit Uitslag|c  ^  ::: | |:::|
4260d9a72ffSGerrit Uitslagdef');
4270d9a72ffSGerrit Uitslag
4280d9a72ffSGerrit Uitslag        $calls = array (
4290d9a72ffSGerrit Uitslag            array('document_start',array()),
4300d9a72ffSGerrit Uitslag            array('p_open',array()),
4310d9a72ffSGerrit Uitslag            array('cdata',array("\n\nabc")),
4320d9a72ffSGerrit Uitslag            array('p_close',array()),
4330d9a72ffSGerrit Uitslag            array('table_open',array(4, 3, 6)),
4340d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
4350d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4360d9a72ffSGerrit Uitslag            array('cdata',array('')),
4370d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4380d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,'right',1)),
4390d9a72ffSGerrit Uitslag            array('cdata',array('  d:::')),
4400d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
4410d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,NULL,1)),
4420d9a72ffSGerrit Uitslag            array('cdata',array('')),
4430d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
4440d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,3)),
4450d9a72ffSGerrit Uitslag            array('cdata',array('')),
4460d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4470d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4480d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
4490d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4500d9a72ffSGerrit Uitslag            array('cdata',array(' b ')),
4510d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4520d9a72ffSGerrit Uitslag            array('tableheader_open',array(1,'left',2)),
4530d9a72ffSGerrit Uitslag            array('cdata',array(' e  ')),
4540d9a72ffSGerrit Uitslag            array('tableheader_close',array()),
4550d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4560d9a72ffSGerrit Uitslag            array('cdata',array(' ')),
4570d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4580d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4590d9a72ffSGerrit Uitslag            array('tablerow_open',array()),
4600d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,'left',1)),
4610d9a72ffSGerrit Uitslag            array('cdata',array('c  ')),
4620d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4630d9a72ffSGerrit Uitslag            array('tablecell_open',array(1,NULL,1)),
4640d9a72ffSGerrit Uitslag            array('cdata',array(' ')),
4650d9a72ffSGerrit Uitslag            array('tablecell_close',array()),
4660d9a72ffSGerrit Uitslag            array('tablerow_close',array()),
4670d9a72ffSGerrit Uitslag
4680d9a72ffSGerrit Uitslag            array('table_close',array(69)),
4690d9a72ffSGerrit Uitslag            array('p_open',array()),
4700d9a72ffSGerrit Uitslag            array('cdata',array('def')),
4710d9a72ffSGerrit Uitslag            array('p_close',array()),
4720d9a72ffSGerrit Uitslag            array('document_end',array()),
4730d9a72ffSGerrit Uitslag        );
474e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
4750d9a72ffSGerrit Uitslag    }
476f8369d7dSTobias Sarnowski
477688ce8d8SChristopher Smith    function testRowSpanTableHead() {
478688ce8d8SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
479688ce8d8SChristopher Smith        $this->P->parse('
480688ce8d8SChristopher Smithabc
481688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
482688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^
483688ce8d8SChristopher Smith| A3 | B3 | C3 |
484688ce8d8SChristopher Smithdef');
485688ce8d8SChristopher Smith
486688ce8d8SChristopher Smith        $calls = array (
487688ce8d8SChristopher Smith            array('document_start',array()),
488688ce8d8SChristopher Smith            array('p_open',array()),
489688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
490688ce8d8SChristopher Smith            array('p_close',array()),
491688ce8d8SChristopher Smith            array('table_open',array(3, 3, 6)),
492688ce8d8SChristopher Smith            array('tablethead_open',array()),
493688ce8d8SChristopher Smith            array('tablerow_open',array()),
494688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
495688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
496688ce8d8SChristopher Smith            array('tableheader_close',array()),
497688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,2)),
498688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
499688ce8d8SChristopher Smith            array('tableheader_close',array()),
500688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
501688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
502688ce8d8SChristopher Smith            array('tableheader_close',array()),
503688ce8d8SChristopher Smith            array('tablerow_close',array()),
504688ce8d8SChristopher Smith            array('tablerow_open',array()),
505688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
506688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
507688ce8d8SChristopher Smith            array('tableheader_close',array()),
508688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
509688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
510688ce8d8SChristopher Smith            array('tableheader_close',array()),
511688ce8d8SChristopher Smith            array('tablerow_close',array()),
512688ce8d8SChristopher Smith            array('tablethead_close',array()),
513688ce8d8SChristopher Smith            array('tablerow_open',array()),
514688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
515688ce8d8SChristopher Smith            array('cdata',array(' A3 ')),
516688ce8d8SChristopher Smith            array('tablecell_close',array()),
517688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
518688ce8d8SChristopher Smith            array('cdata',array(' B3 ')),
519688ce8d8SChristopher Smith            array('tablecell_close',array()),
520688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
521688ce8d8SChristopher Smith            array('cdata',array(' C3 ')),
522688ce8d8SChristopher Smith            array('tablecell_close',array()),
523688ce8d8SChristopher Smith            array('tablerow_close',array()),
524688ce8d8SChristopher Smith            array('table_close',array(57)),
525688ce8d8SChristopher Smith            array('p_open',array()),
526688ce8d8SChristopher Smith            array('cdata',array('def')),
527688ce8d8SChristopher Smith            array('p_close',array()),
528688ce8d8SChristopher Smith            array('document_end',array()),
529688ce8d8SChristopher Smith        );
530688ce8d8SChristopher Smith
531688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
532688ce8d8SChristopher Smith
533688ce8d8SChristopher Smith    }
534688ce8d8SChristopher Smith
535688ce8d8SChristopher Smith    function testRowSpanAcrossTableHeadBoundary() {
536688ce8d8SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
537688ce8d8SChristopher Smith        $this->P->parse('
538688ce8d8SChristopher Smithabc
539688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^
540688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^
541688ce8d8SChristopher Smith| A3 | ::: | C3 |
542688ce8d8SChristopher Smith| A4 | ::: | C4 |
543688ce8d8SChristopher Smithdef');
544688ce8d8SChristopher Smith
545688ce8d8SChristopher Smith        $calls = array (
546688ce8d8SChristopher Smith            array('document_start',array()),
547688ce8d8SChristopher Smith            array('p_open',array()),
548688ce8d8SChristopher Smith            array('cdata',array("\n\nabc")),
549688ce8d8SChristopher Smith            array('p_close',array()),
550688ce8d8SChristopher Smith            array('table_open',array(3, 4, 6)),
551688ce8d8SChristopher Smith            array('tablethead_open',array()),
552688ce8d8SChristopher Smith            array('tablerow_open',array()),
553688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
554688ce8d8SChristopher Smith            array('cdata',array(' X1 ')),
555688ce8d8SChristopher Smith            array('tableheader_close',array()),
556688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,2)),
557688ce8d8SChristopher Smith            array('cdata',array(' Y1 ')),
558688ce8d8SChristopher Smith            array('tableheader_close',array()),
559688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
560688ce8d8SChristopher Smith            array('cdata',array(' Z1 ')),
561688ce8d8SChristopher Smith            array('tableheader_close',array()),
562688ce8d8SChristopher Smith            array('tablerow_close',array()),
563688ce8d8SChristopher Smith            array('tablerow_open',array()),
564688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
565688ce8d8SChristopher Smith            array('cdata',array(' X2 ')),
566688ce8d8SChristopher Smith            array('tableheader_close',array()),
567688ce8d8SChristopher Smith            array('tableheader_open',array(1,NULL,1)),
568688ce8d8SChristopher Smith            array('cdata',array(' Z2 ')),
569688ce8d8SChristopher Smith            array('tableheader_close',array()),
570688ce8d8SChristopher Smith            array('tablerow_close',array()),
571688ce8d8SChristopher Smith            array('tablethead_close',array()),
572688ce8d8SChristopher Smith            array('tablerow_open',array()),
573688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
574688ce8d8SChristopher Smith            array('cdata',array(' A3 ')),
575688ce8d8SChristopher Smith            array('tablecell_close',array()),
576688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,2)),
577688ce8d8SChristopher Smith            array('cdata',array('')),
578688ce8d8SChristopher Smith            array('tablecell_close',array()),
579688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
580688ce8d8SChristopher Smith            array('cdata',array(' C3 ')),
581688ce8d8SChristopher Smith            array('tablecell_close',array()),
582688ce8d8SChristopher Smith            array('tablerow_close',array()),
583688ce8d8SChristopher Smith            array('tablerow_open',array()),
584688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
585688ce8d8SChristopher Smith            array('cdata',array(' A4 ')),
586688ce8d8SChristopher Smith            array('tablecell_close',array()),
587688ce8d8SChristopher Smith            array('tablecell_open',array(1,NULL,1)),
588688ce8d8SChristopher Smith            array('cdata',array(' C4 ')),
589688ce8d8SChristopher Smith            array('tablecell_close',array()),
590688ce8d8SChristopher Smith            array('tablerow_close',array()),
591688ce8d8SChristopher Smith            array('table_close',array(76)),
592688ce8d8SChristopher Smith            array('p_open',array()),
593688ce8d8SChristopher Smith            array('cdata',array('def')),
594688ce8d8SChristopher Smith            array('p_close',array()),
595688ce8d8SChristopher Smith            array('document_end',array()),
596688ce8d8SChristopher Smith        );
597688ce8d8SChristopher Smith
598688ce8d8SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
599688ce8d8SChristopher Smith
600688ce8d8SChristopher Smith    }
601688ce8d8SChristopher Smith
602f8369d7dSTobias Sarnowski    function testCellAlignmentFormatting() {
603f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
604f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
605f8369d7dSTobias Sarnowski        $this->P->parse('
606f8369d7dSTobias Sarnowskiabc
607f8369d7dSTobias Sarnowski|  **X** | Y  ^  Z  |
608f8369d7dSTobias Sarnowskidef');
609f8369d7dSTobias Sarnowski
610f8369d7dSTobias Sarnowski        $calls = array (
611f8369d7dSTobias Sarnowski            array('document_start',array()),
612f8369d7dSTobias Sarnowski            array('p_open',array()),
613f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
614f8369d7dSTobias Sarnowski            array('p_close',array()),
615f8369d7dSTobias Sarnowski            array('table_open',array(3, 1, 6)),
616f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
617f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'right',1)),
618f8369d7dSTobias Sarnowski            array('cdata',array('  ')),
619f8369d7dSTobias Sarnowski            array('strong_open',array()),
620f8369d7dSTobias Sarnowski            array('cdata',array('X')),
621f8369d7dSTobias Sarnowski            array('strong_close',array()),
622f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
623f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
624f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
625f8369d7dSTobias Sarnowski            array('cdata',array(' Y  ')),
626f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
627f8369d7dSTobias Sarnowski            array('tableheader_open',array(1,'center',1)),
628f8369d7dSTobias Sarnowski            array('cdata',array('  Z  ')),
629f8369d7dSTobias Sarnowski            array('tableheader_close',array()),
630f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
631f8369d7dSTobias Sarnowski            array('table_close',array(27)),
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        );
637f8369d7dSTobias Sarnowski
638e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
639f8369d7dSTobias Sarnowski
640f8369d7dSTobias Sarnowski    }
641f8369d7dSTobias Sarnowski
642f8369d7dSTobias Sarnowski    function testTableEol() {
643f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
644f8369d7dSTobias Sarnowski        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
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("abc")),
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(' Row 0 Col 1    ')),
659f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
660f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
661f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
662f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
663f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
664f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
665f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
666f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
667f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
668f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
669f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
670f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
671f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
672f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
673f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
674f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
675f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
676f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
677f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
678f8369d7dSTobias Sarnowski            array('table_close',array(121)),
679f8369d7dSTobias Sarnowski            array('p_open',array()),
680f8369d7dSTobias Sarnowski            array('cdata',array('def')),
681f8369d7dSTobias Sarnowski            array('p_close',array()),
682f8369d7dSTobias Sarnowski            array('document_end',array()),
683f8369d7dSTobias Sarnowski        );
684e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
685f8369d7dSTobias Sarnowski    }
686f8369d7dSTobias Sarnowski
687f8369d7dSTobias Sarnowski    // This is really a failing test - formatting able to spread across cols
688f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
689f8369d7dSTobias Sarnowski    function testTableStrong() {
690f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
691f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
692f8369d7dSTobias Sarnowski        $this->P->parse('
693f8369d7dSTobias Sarnowskiabc
694f8369d7dSTobias Sarnowski| **Row 0 Col 1**    | **Row 0 Col 2     | Row 0 Col 3**        |
695f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
696f8369d7dSTobias Sarnowskidef');
697f8369d7dSTobias Sarnowski        $calls = array (
698f8369d7dSTobias Sarnowski            array('document_start',array()),
699f8369d7dSTobias Sarnowski            array('p_open',array()),
700f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
701f8369d7dSTobias Sarnowski            array('p_close',array()),
702f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
703f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
704f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
705f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
706f8369d7dSTobias Sarnowski            array('strong_open',array()),
707f8369d7dSTobias Sarnowski            array('cdata',array('Row 0 Col 1')),
708f8369d7dSTobias Sarnowski            array('strong_close',array()),
709f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
710f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
711f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
712f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
713f8369d7dSTobias Sarnowski            array('strong_open',array()),
714f8369d7dSTobias Sarnowski            array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
715f8369d7dSTobias Sarnowski            array('strong_close',array()),
716f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
717f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
718f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
719f8369d7dSTobias Sarnowski            array('cdata',array('')),
720f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
721f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
722f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
723f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
724f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
725f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
726f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
727f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
728f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
729f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
730f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
731f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
732f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
733f8369d7dSTobias Sarnowski            array('table_close',array(129)),
734f8369d7dSTobias Sarnowski            array('p_open',array()),
735f8369d7dSTobias Sarnowski            array('cdata',array('def')),
736f8369d7dSTobias Sarnowski            array('p_close',array()),
737f8369d7dSTobias Sarnowski            array('document_end',array()),
738f8369d7dSTobias Sarnowski        );
739e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
740f8369d7dSTobias Sarnowski    }
741f8369d7dSTobias Sarnowski
742f8369d7dSTobias Sarnowski    // This is really a failing test - unformatted able to spread across cols
743f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
744f8369d7dSTobias Sarnowski    function testTableUnformatted() {
745f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
746f8369d7dSTobias Sarnowski        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
747f8369d7dSTobias Sarnowski        $this->P->parse('
748f8369d7dSTobias Sarnowskiabc
749f8369d7dSTobias Sarnowski| <nowiki>Row 0 Col 1</nowiki>    | <nowiki>Row 0 Col 2     | Row 0 Col 3</nowiki>        |
750f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
751f8369d7dSTobias Sarnowskidef');
752f8369d7dSTobias Sarnowski        $calls = array (
753f8369d7dSTobias Sarnowski            array('document_start',array()),
754f8369d7dSTobias Sarnowski            array('p_open',array()),
755f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
756f8369d7dSTobias Sarnowski            array('p_close',array()),
757f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
758f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
759f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
760f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
761f8369d7dSTobias Sarnowski            array('unformatted',array('Row 0 Col 1')),
762f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
763f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
764f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
765f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
766f8369d7dSTobias Sarnowski            array('unformatted',array('Row 0 Col 2     | Row 0 Col 3')),
767f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
768f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
769f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
770f8369d7dSTobias Sarnowski            array('cdata',array('')),
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(155)),
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        );
790e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
791f8369d7dSTobias Sarnowski    }
792f8369d7dSTobias Sarnowski
793f8369d7dSTobias Sarnowski    function testTableLinebreak() {
794f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
795f8369d7dSTobias Sarnowski        $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
796f8369d7dSTobias Sarnowski        $this->P->parse('
797f8369d7dSTobias Sarnowskiabc
798f8369d7dSTobias Sarnowski| Row 0\\\\ Col 1    | Row 0 Col 2     | Row 0 Col 3        |
799f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
800f8369d7dSTobias Sarnowskidef');
801f8369d7dSTobias Sarnowski        $calls = array (
802f8369d7dSTobias Sarnowski            array('document_start',array()),
803f8369d7dSTobias Sarnowski            array('p_open',array()),
804f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
805f8369d7dSTobias Sarnowski            array('p_close',array()),
806f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
807f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
808f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
809f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0')),
810f8369d7dSTobias Sarnowski            array('linebreak',array()),
811f8369d7dSTobias Sarnowski            array('cdata',array('Col 1    ')),
812f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
813f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
814f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 2     ')),
815f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
816f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
817f8369d7dSTobias Sarnowski            array('cdata',array(' Row 0 Col 3        ')),
818f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
819f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
820f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
821f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
822f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
823f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
824f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
825f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
826f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
827f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
828f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
829f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
830f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
831f8369d7dSTobias Sarnowski            array('table_close',array(123)),
832f8369d7dSTobias Sarnowski            array('p_open',array()),
833f8369d7dSTobias Sarnowski            array('cdata',array('def')),
834f8369d7dSTobias Sarnowski            array('p_close',array()),
835f8369d7dSTobias Sarnowski            array('document_end',array()),
836f8369d7dSTobias Sarnowski        );
837f8369d7dSTobias Sarnowski
838e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
839f8369d7dSTobias Sarnowski    }
840f8369d7dSTobias Sarnowski
841f8369d7dSTobias Sarnowski    // This is really a failing test - footnote able to spread across cols
842f8369d7dSTobias Sarnowski    // Problem is fixing it would mean a major rewrite of table handling
843f8369d7dSTobias Sarnowski    function testTableFootnote() {
844f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
845f8369d7dSTobias Sarnowski        $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote());
846f8369d7dSTobias Sarnowski        $this->P->parse('
847f8369d7dSTobias Sarnowskiabc
848f8369d7dSTobias Sarnowski| ((Row 0 Col 1))    | ((Row 0 Col 2     | Row 0 Col 3))        |
849f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
850f8369d7dSTobias Sarnowskidef');
851f8369d7dSTobias Sarnowski        $calls = array (
852f8369d7dSTobias Sarnowski            array('document_start',array()),
853f8369d7dSTobias Sarnowski            array('p_open',array()),
854f8369d7dSTobias Sarnowski            array('cdata',array("\n\nabc")),
855f8369d7dSTobias Sarnowski            array('p_close',array()),
856f8369d7dSTobias Sarnowski            array('table_open',array(3, 2, 6)),
857f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
858f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
859f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
860f8369d7dSTobias Sarnowski            array('nest', array ( array (
861f8369d7dSTobias Sarnowski              array('footnote_open',array()),
862f8369d7dSTobias Sarnowski              array('cdata',array('Row 0 Col 1')),
863f8369d7dSTobias Sarnowski              array('footnote_close',array()),
864f8369d7dSTobias Sarnowski            ))),
865f8369d7dSTobias Sarnowski            array('cdata',array('    ')),
866f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
867f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
868f8369d7dSTobias Sarnowski            array('cdata',array(' ')),
869f8369d7dSTobias Sarnowski            array('nest', array ( array (
870f8369d7dSTobias Sarnowski              array('footnote_open',array()),
871f8369d7dSTobias Sarnowski              array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
872f8369d7dSTobias Sarnowski              array('footnote_close',array()),
873f8369d7dSTobias Sarnowski            ))),
874f8369d7dSTobias Sarnowski            array('cdata',array('        ')),
875f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
876f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,null,1)),
877f8369d7dSTobias Sarnowski            array('cdata',array('')),
878f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
879f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
880f8369d7dSTobias Sarnowski            array('tablerow_open',array()),
881f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
882f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 1    ')),
883f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
884f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
885f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 2     ')),
886f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
887f8369d7dSTobias Sarnowski            array('tablecell_open',array(1,'left',1)),
888f8369d7dSTobias Sarnowski            array('cdata',array(' Row 1 Col 3        ')),
889f8369d7dSTobias Sarnowski            array('tablecell_close',array()),
890f8369d7dSTobias Sarnowski            array('tablerow_close',array()),
891f8369d7dSTobias Sarnowski            array('table_close',array(129)),
892f8369d7dSTobias Sarnowski            array('p_open',array()),
893f8369d7dSTobias Sarnowski            array('cdata',array('def')),
894f8369d7dSTobias Sarnowski            array('p_close',array()),
895f8369d7dSTobias Sarnowski            array('document_end',array()),
896f8369d7dSTobias Sarnowski        );
897e0328e30SChristopher Smith        $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
898f8369d7dSTobias Sarnowski    }
8995a41afe6SChristopher Smith
9005a41afe6SChristopher Smith    function testTable_FS1833() {
9015a41afe6SChristopher Smith        $syntax = " \n| Row 0 Col 1    |\n";
9025a41afe6SChristopher Smith        $this->P->addMode('table',new Doku_Parser_Mode_Table());
9035a41afe6SChristopher Smith        $this->P->parse($syntax);
9045a41afe6SChristopher Smith        $calls = array (
9055a41afe6SChristopher Smith            array('document_start',array()),
9065a41afe6SChristopher Smith            array('table_open',array(1, 1, 2)),
9075a41afe6SChristopher Smith            array('tablerow_open',array()),
9085a41afe6SChristopher Smith            array('tablecell_open',array(1,'left',1)),
9095a41afe6SChristopher Smith            array('cdata',array(' Row 0 Col 1    ')),
9105a41afe6SChristopher Smith            array('tablecell_close',array()),
9115a41afe6SChristopher Smith            array('tablerow_close',array()),
9125a41afe6SChristopher Smith            array('table_close',array(strlen($syntax))),
9135a41afe6SChristopher Smith            array('document_end',array()),
9145a41afe6SChristopher Smith        );
9155a41afe6SChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
9165a41afe6SChristopher Smith    }
9175a41afe6SChristopher Smith
918f8369d7dSTobias Sarnowski}
919