xref: /dokuwiki/_test/tests/inc/parser/parser_table.test.php (revision f05a1cc5fcdb4c2b6ee3cbf499f980f800dbd105)
1<?php
2require_once 'parser.inc.php';
3
4class TestOfDoku_Parser_Table extends TestOfDoku_Parser {
5
6    function testTable() {
7        $this->P->addMode('table',new Doku_Parser_Mode_Table());
8        $this->P->parse('
9abc
10| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
11| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
12def');
13        $calls = array (
14            array('document_start',array()),
15            array('p_open',array()),
16            array('cdata',array("\n\nabc")),
17            array('p_close',array()),
18            array('table_open',array(3, 2, 6)),
19            array('tablerow_open',array()),
20            array('tablecell_open',array(1,'left',1)),
21            array('cdata',array(' Row 0 Col 1    ')),
22            array('tablecell_close',array()),
23            array('tablecell_open',array(1,'left',1)),
24            array('cdata',array(' Row 0 Col 2     ')),
25            array('tablecell_close',array()),
26            array('tablecell_open',array(1,'left',1)),
27            array('cdata',array(' Row 0 Col 3        ')),
28            array('tablecell_close',array()),
29            array('tablerow_close',array()),
30            array('tablerow_open',array()),
31            array('tablecell_open',array(1,'left',1)),
32            array('cdata',array(' Row 1 Col 1    ')),
33            array('tablecell_close',array()),
34            array('tablecell_open',array(1,'left',1)),
35            array('cdata',array(' Row 1 Col 2     ')),
36            array('tablecell_close',array()),
37            array('tablecell_open',array(1,'left',1)),
38            array('cdata',array(' Row 1 Col 3        ')),
39            array('tablecell_close',array()),
40            array('tablerow_close',array()),
41            array('table_close',array(121)),
42            array('p_open',array()),
43            array('cdata',array('def')),
44            array('p_close',array()),
45            array('document_end',array()),
46        );
47        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
48    }
49
50    function testTableWinEOL() {
51        $this->P->addMode('table',new Doku_Parser_Mode_Table());
52        $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");
53        $calls = array (
54            array('document_start',array()),
55            array('p_open',array()),
56            array('cdata',array("\n\nabc")),
57            array('p_close',array()),
58            array('table_open',array(3, 2, 6)),
59            array('tablerow_open',array()),
60            array('tablecell_open',array(1,'left',1)),
61            array('cdata',array(' Row 0 Col 1    ')),
62            array('tablecell_close',array()),
63            array('tablecell_open',array(1,'left',1)),
64            array('cdata',array(' Row 0 Col 2     ')),
65            array('tablecell_close',array()),
66            array('tablecell_open',array(1,'left',1)),
67            array('cdata',array(' Row 0 Col 3        ')),
68            array('tablecell_close',array()),
69            array('tablerow_close',array()),
70            array('tablerow_open',array()),
71            array('tablecell_open',array(1,'left',1)),
72            array('cdata',array(' Row 1 Col 1    ')),
73            array('tablecell_close',array()),
74            array('tablecell_open',array(1,'left',1)),
75            array('cdata',array(' Row 1 Col 2     ')),
76            array('tablecell_close',array()),
77            array('tablecell_open',array(1,'left',1)),
78            array('cdata',array(' Row 1 Col 3        ')),
79            array('tablecell_close',array()),
80            array('tablerow_close',array()),
81            array('table_close',array(121)),
82            array('p_open',array()),
83            array('cdata',array('def')),
84            array('p_close',array()),
85            array('document_end',array()),
86        );
87        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
88    }
89
90    function testEmptyTable() {
91        $this->P->addMode('table',new Doku_Parser_Mode_Table());
92        $this->P->parse('
93abc
94|
95def');
96
97        $calls = array (
98            array('document_start',array()),
99            array('p_open',array()),
100            array('cdata',array("\n\nabc")),
101            array('p_close',array()),
102            array('table_open',array(0, 1, 6)),
103            array('tablerow_open',array()),
104            array('tablerow_close',array()),
105            array('table_close',array(7)),
106            array('p_open',array()),
107            array('cdata',array('def')),
108            array('p_close',array()),
109            array('document_end',array()),
110        );
111
112        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
113    }
114
115    function testTableHeaders() {
116        $this->P->addMode('table',new Doku_Parser_Mode_Table());
117        $this->P->parse('
118abc
119^ X | Y ^ Z |
120def');
121
122        $calls = array (
123            array('document_start',array()),
124            array('p_open',array()),
125            array('cdata',array("\n\nabc")),
126            array('p_close',array()),
127            array('table_open',array(3, 1, 6)),
128            array('tablethead_open',array()),
129            array('tablerow_open',array()),
130            array('tableheader_open',array(1,NULL,1)),
131            array('cdata',array(' X ')),
132            array('tableheader_close',array()),
133            array('tablecell_open',array(1,NULL,1)),
134            array('cdata',array(' Y ')),
135            array('tablecell_close',array()),
136            array('tableheader_open',array(1,NULL,1)),
137            array('cdata',array(' Z ')),
138            array('tableheader_close',array()),
139            array('tablerow_close',array()),
140            array('tablethead_close',array()),
141            array('table_close',array(19)),
142            array('p_open',array()),
143            array('cdata',array('def')),
144            array('p_close',array()),
145            array('document_end',array()),
146        );
147
148        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
149
150    }
151
152    function testTableHeadersMultilines() {
153        $this->P->addMode('table',new Doku_Parser_Mode_Table());
154        $this->P->parse('
155abc
156^ X | Y ^ Z |
157| A | B | C |
158def');
159
160        $calls = array (
161            array('document_start',array()),
162            array('p_open',array()),
163            array('cdata',array("\n\nabc")),
164            array('p_close',array()),
165            array('table_open',array(3, 2, 6)),
166            array('tablethead_open',array()),
167            array('tablerow_open',array()),
168            array('tableheader_open',array(1,NULL,1)),
169            array('cdata',array(' X ')),
170            array('tableheader_close',array()),
171            array('tablecell_open',array(1,NULL,1)),
172            array('cdata',array(' Y ')),
173            array('tablecell_close',array()),
174            array('tableheader_open',array(1,NULL,1)),
175            array('cdata',array(' Z ')),
176            array('tableheader_close',array()),
177            array('tablerow_close',array()),
178            array('tablethead_close',array()),
179            array('tablerow_open',array()),
180            array('tablecell_open',array(1,NULL,1)),
181            array('cdata',array(' A ')),
182            array('tablecell_close',array()),
183            array('tablecell_open',array(1,NULL,1)),
184            array('cdata',array(' B ')),
185            array('tablecell_close',array()),
186            array('tablecell_open',array(1,NULL,1)),
187            array('cdata',array(' C ')),
188            array('tablecell_close',array()),
189            array('tablerow_close',array()),
190            array('table_close',array(33)),
191            array('p_open',array()),
192            array('cdata',array('def')),
193            array('p_close',array()),
194            array('document_end',array()),
195        );
196
197        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
198
199    }
200
201    function testCellAlignment() {
202        $this->P->addMode('table',new Doku_Parser_Mode_Table());
203        $this->P->parse('
204abc
205|  X | Y  ^  Z  |
206def');
207
208        $calls = array (
209            array('document_start',array()),
210            array('p_open',array()),
211            array('cdata',array("\n\nabc")),
212            array('p_close',array()),
213            array('table_open',array(3, 1, 6)),
214            array('tablerow_open',array()),
215            array('tablecell_open',array(1,'right',1)),
216            array('cdata',array('  X ')),
217            array('tablecell_close',array()),
218            array('tablecell_open',array(1,'left',1)),
219            array('cdata',array(' Y  ')),
220            array('tablecell_close',array()),
221            array('tableheader_open',array(1,'center',1)),
222            array('cdata',array('  Z  ')),
223            array('tableheader_close',array()),
224            array('tablerow_close',array()),
225            array('table_close',array(23)),
226            array('p_open',array()),
227            array('cdata',array('def')),
228            array('p_close',array()),
229            array('document_end',array()),
230        );
231
232        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
233    }
234
235    function testCellSpan() {
236        $this->P->addMode('table',new Doku_Parser_Mode_Table());
237        $this->P->parse('
238abc
239|  d || e |
240| f ^ ^|
241||||
242def');
243
244        $calls = array (
245            array('document_start',array()),
246            array('p_open',array()),
247            array('cdata',array("\n\nabc")),
248            array('p_close',array()),
249            array('table_open',array(3, 3, 6)),
250            array('tablerow_open',array()),
251            array('tablecell_open',array(2,'right',1)),
252            array('cdata',array('  d ')),
253            array('tablecell_close',array()),
254            array('tablecell_open',array(1,NULL,1)),
255            array('cdata',array(' e ')),
256            array('tablecell_close',array()),
257            array('tablerow_close',array()),
258            array('tablerow_open',array()),
259            array('tablecell_open',array(1,NULL,1)),
260            array('cdata',array(' f ')),
261            array('tablecell_close',array()),
262            array('tableheader_open',array(2,NULL,1)),
263            array('cdata',array(' ')),
264            array('tableheader_close',array()),
265            array('tablerow_close',array()),
266            array('tablerow_open',array()),
267            array('tablerow_close',array()),
268            array('table_close',array(31)),
269            array('p_open',array()),
270            array('cdata',array('def')),
271            array('p_close',array()),
272            array('document_end',array()),
273        );
274        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
275    }
276
277    function testCellRowSpan() {
278        $this->P->addMode('table',new Doku_Parser_Mode_Table());
279        $this->P->parse('
280abc
281| a |  c:::||
282|:::^ d  | e|
283|b  ^  ::: |:::f|
284def');
285
286        $calls = array (
287            array('document_start',array()),
288            array('p_open',array()),
289            array('cdata',array("\n\nabc")),
290            array('p_close',array()),
291            array('table_open',array(3, 3, 6)),
292            array('tablerow_open',array()),
293            array('tablecell_open',array(1,NULL,2)),
294            array('cdata',array(' a ')),
295            array('tablecell_close',array()),
296            array('tablecell_open',array(2,'right',1)),
297            array('cdata',array('  c:::')),
298            array('tablecell_close',array()),
299            array('tablerow_close',array()),
300            array('tablerow_open',array()),
301            array('tableheader_open',array(1,'left',2)),
302            array('cdata',array(' d  ')),
303            array('tableheader_close',array()),
304            array('tablecell_open',array(1,NULL,1)),
305            array('cdata',array(' e')),
306            array('tablecell_close',array()),
307            array('tablerow_close',array()),
308            array('tablerow_open',array()),
309            array('tablecell_open',array(1,'left',1)),
310            array('cdata',array('b  ')),
311            array('tablecell_close',array()),
312            array('tablecell_open',array(1,NULL,1)),
313            array('cdata',array(':::f')),
314            array('tablecell_close',array()),
315            array('tablerow_close',array()),
316            array('table_close',array(51)),
317            array('p_open',array()),
318            array('cdata',array('def')),
319            array('p_close',array()),
320            array('document_end',array()),
321        );
322        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
323    }
324
325    function testCellRowSpanFirstRow() {
326        $this->P->addMode('table',new Doku_Parser_Mode_Table());
327        $this->P->parse('
328abc
329|::: ^  d:::^:::|  :::  |
330| b ^ e  | | ::: |
331|c  ^  ::: | |:::|
332def');
333
334        $calls = array (
335            array('document_start',array()),
336            array('p_open',array()),
337            array('cdata',array("\n\nabc")),
338            array('p_close',array()),
339            array('table_open',array(4, 3, 6)),
340            array('tablerow_open',array()),
341            array('tablecell_open',array(1,NULL,1)),
342            array('cdata',array('')),
343            array('tablecell_close',array()),
344            array('tableheader_open',array(1,'right',1)),
345            array('cdata',array('  d:::')),
346            array('tableheader_close',array()),
347            array('tableheader_open',array(1,NULL,1)),
348            array('cdata',array('')),
349            array('tableheader_close',array()),
350            array('tablecell_open',array(1,NULL,3)),
351            array('cdata',array('')),
352            array('tablecell_close',array()),
353            array('tablerow_close',array()),
354            array('tablerow_open',array()),
355            array('tablecell_open',array(1,NULL,1)),
356            array('cdata',array(' b ')),
357            array('tablecell_close',array()),
358            array('tableheader_open',array(1,'left',2)),
359            array('cdata',array(' e  ')),
360            array('tableheader_close',array()),
361            array('tablecell_open',array(1,NULL,1)),
362            array('cdata',array(' ')),
363            array('tablecell_close',array()),
364            array('tablerow_close',array()),
365            array('tablerow_open',array()),
366            array('tablecell_open',array(1,'left',1)),
367            array('cdata',array('c  ')),
368            array('tablecell_close',array()),
369            array('tablecell_open',array(1,NULL,1)),
370            array('cdata',array(' ')),
371            array('tablecell_close',array()),
372            array('tablerow_close',array()),
373
374            array('table_close',array(69)),
375            array('p_open',array()),
376            array('cdata',array('def')),
377            array('p_close',array()),
378            array('document_end',array()),
379        );
380        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
381    }
382
383    function testCellAlignmentFormatting() {
384        $this->P->addMode('table',new Doku_Parser_Mode_Table());
385        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
386        $this->P->parse('
387abc
388|  **X** | Y  ^  Z  |
389def');
390
391        $calls = array (
392            array('document_start',array()),
393            array('p_open',array()),
394            array('cdata',array("\n\nabc")),
395            array('p_close',array()),
396            array('table_open',array(3, 1, 6)),
397            array('tablerow_open',array()),
398            array('tablecell_open',array(1,'right',1)),
399            array('cdata',array('  ')),
400            array('strong_open',array()),
401            array('cdata',array('X')),
402            array('strong_close',array()),
403            array('cdata',array(' ')),
404            array('tablecell_close',array()),
405            array('tablecell_open',array(1,'left',1)),
406            array('cdata',array(' Y  ')),
407            array('tablecell_close',array()),
408            array('tableheader_open',array(1,'center',1)),
409            array('cdata',array('  Z  ')),
410            array('tableheader_close',array()),
411            array('tablerow_close',array()),
412            array('table_close',array(27)),
413            array('p_open',array()),
414            array('cdata',array('def')),
415            array('p_close',array()),
416            array('document_end',array()),
417        );
418
419        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
420
421    }
422
423    function testTableEol() {
424        $this->P->addMode('table',new Doku_Parser_Mode_Table());
425        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
426        $this->P->parse('
427abc
428| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
429| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
430def');
431        $calls = array (
432            array('document_start',array()),
433            array('p_open',array()),
434            array('cdata',array("abc")),
435            array('p_close',array()),
436            array('table_open',array(3, 2, 6)),
437            array('tablerow_open',array()),
438            array('tablecell_open',array(1,'left',1)),
439            array('cdata',array(' Row 0 Col 1    ')),
440            array('tablecell_close',array()),
441            array('tablecell_open',array(1,'left',1)),
442            array('cdata',array(' Row 0 Col 2     ')),
443            array('tablecell_close',array()),
444            array('tablecell_open',array(1,'left',1)),
445            array('cdata',array(' Row 0 Col 3        ')),
446            array('tablecell_close',array()),
447            array('tablerow_close',array()),
448            array('tablerow_open',array()),
449            array('tablecell_open',array(1,'left',1)),
450            array('cdata',array(' Row 1 Col 1    ')),
451            array('tablecell_close',array()),
452            array('tablecell_open',array(1,'left',1)),
453            array('cdata',array(' Row 1 Col 2     ')),
454            array('tablecell_close',array()),
455            array('tablecell_open',array(1,'left',1)),
456            array('cdata',array(' Row 1 Col 3        ')),
457            array('tablecell_close',array()),
458            array('tablerow_close',array()),
459            array('table_close',array(121)),
460            array('p_open',array()),
461            array('cdata',array('def')),
462            array('p_close',array()),
463            array('document_end',array()),
464        );
465        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
466    }
467
468    // This is really a failing test - formatting able to spread across cols
469    // Problem is fixing it would mean a major rewrite of table handling
470    function testTableStrong() {
471        $this->P->addMode('table',new Doku_Parser_Mode_Table());
472        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
473        $this->P->parse('
474abc
475| **Row 0 Col 1**    | **Row 0 Col 2     | Row 0 Col 3**        |
476| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
477def');
478        $calls = array (
479            array('document_start',array()),
480            array('p_open',array()),
481            array('cdata',array("\n\nabc")),
482            array('p_close',array()),
483            array('table_open',array(3, 2, 6)),
484            array('tablerow_open',array()),
485            array('tablecell_open',array(1,'left',1)),
486            array('cdata',array(' ')),
487            array('strong_open',array()),
488            array('cdata',array('Row 0 Col 1')),
489            array('strong_close',array()),
490            array('cdata',array('    ')),
491            array('tablecell_close',array()),
492            array('tablecell_open',array(1,'left',1)),
493            array('cdata',array(' ')),
494            array('strong_open',array()),
495            array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
496            array('strong_close',array()),
497            array('cdata',array('        ')),
498            array('tablecell_close',array()),
499            array('tablecell_open',array(1,null,1)),
500            array('cdata',array('')),
501            array('tablecell_close',array()),
502            array('tablerow_close',array()),
503            array('tablerow_open',array()),
504            array('tablecell_open',array(1,'left',1)),
505            array('cdata',array(' Row 1 Col 1    ')),
506            array('tablecell_close',array()),
507            array('tablecell_open',array(1,'left',1)),
508            array('cdata',array(' Row 1 Col 2     ')),
509            array('tablecell_close',array()),
510            array('tablecell_open',array(1,'left',1)),
511            array('cdata',array(' Row 1 Col 3        ')),
512            array('tablecell_close',array()),
513            array('tablerow_close',array()),
514            array('table_close',array(129)),
515            array('p_open',array()),
516            array('cdata',array('def')),
517            array('p_close',array()),
518            array('document_end',array()),
519        );
520        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
521    }
522
523    // This is really a failing test - unformatted able to spread across cols
524    // Problem is fixing it would mean a major rewrite of table handling
525    function testTableUnformatted() {
526        $this->P->addMode('table',new Doku_Parser_Mode_Table());
527        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
528        $this->P->parse('
529abc
530| <nowiki>Row 0 Col 1</nowiki>    | <nowiki>Row 0 Col 2     | Row 0 Col 3</nowiki>        |
531| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
532def');
533        $calls = array (
534            array('document_start',array()),
535            array('p_open',array()),
536            array('cdata',array("\n\nabc")),
537            array('p_close',array()),
538            array('table_open',array(3, 2, 6)),
539            array('tablerow_open',array()),
540            array('tablecell_open',array(1,'left',1)),
541            array('cdata',array(' ')),
542            array('unformatted',array('Row 0 Col 1')),
543            array('cdata',array('    ')),
544            array('tablecell_close',array()),
545            array('tablecell_open',array(1,'left',1)),
546            array('cdata',array(' ')),
547            array('unformatted',array('Row 0 Col 2     | Row 0 Col 3')),
548            array('cdata',array('        ')),
549            array('tablecell_close',array()),
550            array('tablecell_open',array(1,null,1)),
551            array('cdata',array('')),
552            array('tablecell_close',array()),
553            array('tablerow_close',array()),
554            array('tablerow_open',array()),
555            array('tablecell_open',array(1,'left',1)),
556            array('cdata',array(' Row 1 Col 1    ')),
557            array('tablecell_close',array()),
558            array('tablecell_open',array(1,'left',1)),
559            array('cdata',array(' Row 1 Col 2     ')),
560            array('tablecell_close',array()),
561            array('tablecell_open',array(1,'left',1)),
562            array('cdata',array(' Row 1 Col 3        ')),
563            array('tablecell_close',array()),
564            array('tablerow_close',array()),
565            array('table_close',array(155)),
566            array('p_open',array()),
567            array('cdata',array('def')),
568            array('p_close',array()),
569            array('document_end',array()),
570        );
571        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
572    }
573
574    function testTableLinebreak() {
575        $this->P->addMode('table',new Doku_Parser_Mode_Table());
576        $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
577        $this->P->parse('
578abc
579| Row 0\\\\ Col 1    | Row 0 Col 2     | Row 0 Col 3        |
580| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
581def');
582        $calls = array (
583            array('document_start',array()),
584            array('p_open',array()),
585            array('cdata',array("\n\nabc")),
586            array('p_close',array()),
587            array('table_open',array(3, 2, 6)),
588            array('tablerow_open',array()),
589            array('tablecell_open',array(1,'left',1)),
590            array('cdata',array(' Row 0')),
591            array('linebreak',array()),
592            array('cdata',array('Col 1    ')),
593            array('tablecell_close',array()),
594            array('tablecell_open',array(1,'left',1)),
595            array('cdata',array(' Row 0 Col 2     ')),
596            array('tablecell_close',array()),
597            array('tablecell_open',array(1,'left',1)),
598            array('cdata',array(' Row 0 Col 3        ')),
599            array('tablecell_close',array()),
600            array('tablerow_close',array()),
601            array('tablerow_open',array()),
602            array('tablecell_open',array(1,'left',1)),
603            array('cdata',array(' Row 1 Col 1    ')),
604            array('tablecell_close',array()),
605            array('tablecell_open',array(1,'left',1)),
606            array('cdata',array(' Row 1 Col 2     ')),
607            array('tablecell_close',array()),
608            array('tablecell_open',array(1,'left',1)),
609            array('cdata',array(' Row 1 Col 3        ')),
610            array('tablecell_close',array()),
611            array('tablerow_close',array()),
612            array('table_close',array(123)),
613            array('p_open',array()),
614            array('cdata',array('def')),
615            array('p_close',array()),
616            array('document_end',array()),
617        );
618
619        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
620    }
621
622    // This is really a failing test - footnote able to spread across cols
623    // Problem is fixing it would mean a major rewrite of table handling
624    function testTableFootnote() {
625        $this->P->addMode('table',new Doku_Parser_Mode_Table());
626        $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote());
627        $this->P->parse('
628abc
629| ((Row 0 Col 1))    | ((Row 0 Col 2     | Row 0 Col 3))        |
630| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
631def');
632        $calls = array (
633            array('document_start',array()),
634            array('p_open',array()),
635            array('cdata',array("\n\nabc")),
636            array('p_close',array()),
637            array('table_open',array(3, 2, 6)),
638            array('tablerow_open',array()),
639            array('tablecell_open',array(1,'left',1)),
640            array('cdata',array(' ')),
641            array('nest', array ( array (
642              array('footnote_open',array()),
643              array('cdata',array('Row 0 Col 1')),
644              array('footnote_close',array()),
645            ))),
646            array('cdata',array('    ')),
647            array('tablecell_close',array()),
648            array('tablecell_open',array(1,'left',1)),
649            array('cdata',array(' ')),
650            array('nest', array ( array (
651              array('footnote_open',array()),
652              array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
653              array('footnote_close',array()),
654            ))),
655            array('cdata',array('        ')),
656            array('tablecell_close',array()),
657            array('tablecell_open',array(1,null,1)),
658            array('cdata',array('')),
659            array('tablecell_close',array()),
660            array('tablerow_close',array()),
661            array('tablerow_open',array()),
662            array('tablecell_open',array(1,'left',1)),
663            array('cdata',array(' Row 1 Col 1    ')),
664            array('tablecell_close',array()),
665            array('tablecell_open',array(1,'left',1)),
666            array('cdata',array(' Row 1 Col 2     ')),
667            array('tablecell_close',array()),
668            array('tablecell_open',array(1,'left',1)),
669            array('cdata',array(' Row 1 Col 3        ')),
670            array('tablecell_close',array()),
671            array('tablerow_close',array()),
672            array('table_close',array(129)),
673            array('p_open',array()),
674            array('cdata',array('def')),
675            array('p_close',array()),
676            array('document_end',array()),
677        );
678        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
679    }
680}
681
682