xref: /dokuwiki/_test/tests/inc/parser/parser_table.test.php (revision e26a58378c0c7f5d468dde469a7f782b45354426)
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('tablerow_open',array()),
129            array('tableheader_open',array(1,NULL,1)),
130            array('cdata',array(' X ')),
131            array('tableheader_close',array()),
132            array('tablecell_open',array(1,NULL,1)),
133            array('cdata',array(' Y ')),
134            array('tablecell_close',array()),
135            array('tableheader_open',array(1,NULL,1)),
136            array('cdata',array(' Z ')),
137            array('tableheader_close',array()),
138            array('tablerow_close',array()),
139            array('table_close',array(19)),
140            array('p_open',array()),
141            array('cdata',array('def')),
142            array('p_close',array()),
143            array('document_end',array()),
144        );
145
146        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
147
148    }
149
150    function testCellAlignment() {
151        $this->P->addMode('table',new Doku_Parser_Mode_Table());
152        $this->P->parse('
153abc
154|  X | Y  ^  Z  |
155def');
156
157        $calls = array (
158            array('document_start',array()),
159            array('p_open',array()),
160            array('cdata',array("\n\nabc")),
161            array('p_close',array()),
162            array('table_open',array(3, 1, 6)),
163            array('tablerow_open',array()),
164            array('tablecell_open',array(1,'right',1)),
165            array('cdata',array('  X ')),
166            array('tablecell_close',array()),
167            array('tablecell_open',array(1,'left',1)),
168            array('cdata',array(' Y  ')),
169            array('tablecell_close',array()),
170            array('tableheader_open',array(1,'center',1)),
171            array('cdata',array('  Z  ')),
172            array('tableheader_close',array()),
173            array('tablerow_close',array()),
174            array('table_close',array(23)),
175            array('p_open',array()),
176            array('cdata',array('def')),
177            array('p_close',array()),
178            array('document_end',array()),
179        );
180
181        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
182    }
183
184    function testCellSpan() {
185        $this->P->addMode('table',new Doku_Parser_Mode_Table());
186        $this->P->parse('
187abc
188|  d || e |
189| f ^ ^|
190||||
191def');
192
193        $calls = array (
194            array('document_start',array()),
195            array('p_open',array()),
196            array('cdata',array("\n\nabc")),
197            array('p_close',array()),
198            array('table_open',array(3, 3, 6)),
199            array('tablerow_open',array()),
200            array('tablecell_open',array(2,'right',1)),
201            array('cdata',array('  d ')),
202            array('tablecell_close',array()),
203            array('tablecell_open',array(1,NULL,1)),
204            array('cdata',array(' e ')),
205            array('tablecell_close',array()),
206            array('tablerow_close',array()),
207            array('tablerow_open',array()),
208            array('tablecell_open',array(1,NULL,1)),
209            array('cdata',array(' f ')),
210            array('tablecell_close',array()),
211            array('tableheader_open',array(2,NULL,1)),
212            array('cdata',array(' ')),
213            array('tableheader_close',array()),
214            array('tablerow_close',array()),
215            array('tablerow_open',array()),
216            array('tablerow_close',array()),
217            array('table_close',array(31)),
218            array('p_open',array()),
219            array('cdata',array('def')),
220            array('p_close',array()),
221            array('document_end',array()),
222        );
223        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
224    }
225
226    function testCellRowSpan() {
227        $this->P->addMode('table',new Doku_Parser_Mode_Table());
228        $this->P->parse('
229abc
230| a |  c:::||
231|:::^ d  | e|
232|b  ^  ::: |:::f|
233def');
234
235        $calls = array (
236            array('document_start',array()),
237            array('p_open',array()),
238            array('cdata',array("\n\nabc")),
239            array('p_close',array()),
240            array('table_open',array(3, 3, 6)),
241            array('tablerow_open',array()),
242            array('tablecell_open',array(1,NULL,2)),
243            array('cdata',array(' a ')),
244            array('tablecell_close',array()),
245            array('tablecell_open',array(2,'right',1)),
246            array('cdata',array('  c:::')),
247            array('tablecell_close',array()),
248            array('tablerow_close',array()),
249            array('tablerow_open',array()),
250            array('tableheader_open',array(1,'left',2)),
251            array('cdata',array(' d  ')),
252            array('tableheader_close',array()),
253            array('tablecell_open',array(1,NULL,1)),
254            array('cdata',array(' e')),
255            array('tablecell_close',array()),
256            array('tablerow_close',array()),
257            array('tablerow_open',array()),
258            array('tablecell_open',array(1,'left',1)),
259            array('cdata',array('b  ')),
260            array('tablecell_close',array()),
261            array('tablecell_open',array(1,NULL,1)),
262            array('cdata',array(':::f')),
263            array('tablecell_close',array()),
264            array('tablerow_close',array()),
265            array('table_close',array(51)),
266            array('p_open',array()),
267            array('cdata',array('def')),
268            array('p_close',array()),
269            array('document_end',array()),
270        );
271        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
272    }
273
274    function testCellRowSpanFirstRow() {
275        $this->P->addMode('table',new Doku_Parser_Mode_Table());
276        $this->P->parse('
277abc
278|::: ^  d:::^:::|  :::  |
279| b ^ e  | | ::: |
280|c  ^  ::: | |:::|
281def');
282
283        $calls = array (
284            array('document_start',array()),
285            array('p_open',array()),
286            array('cdata',array("\n\nabc")),
287            array('p_close',array()),
288            array('table_open',array(4, 3, 6)),
289            array('tablerow_open',array()),
290            array('tablecell_open',array(1,NULL,1)),
291            array('cdata',array('')),
292            array('tablecell_close',array()),
293            array('tableheader_open',array(1,'right',1)),
294            array('cdata',array('  d:::')),
295            array('tableheader_close',array()),
296            array('tableheader_open',array(1,NULL,1)),
297            array('cdata',array('')),
298            array('tableheader_close',array()),
299            array('tablecell_open',array(1,NULL,3)),
300            array('cdata',array('')),
301            array('tablecell_close',array()),
302            array('tablerow_close',array()),
303            array('tablerow_open',array()),
304            array('tablecell_open',array(1,NULL,1)),
305            array('cdata',array(' b ')),
306            array('tablecell_close',array()),
307            array('tableheader_open',array(1,'left',2)),
308            array('cdata',array(' e  ')),
309            array('tableheader_close',array()),
310            array('tablecell_open',array(1,NULL,1)),
311            array('cdata',array(' ')),
312            array('tablecell_close',array()),
313            array('tablerow_close',array()),
314            array('tablerow_open',array()),
315            array('tablecell_open',array(1,'left',1)),
316            array('cdata',array('c  ')),
317            array('tablecell_close',array()),
318            array('tablecell_open',array(1,NULL,1)),
319            array('cdata',array(' ')),
320            array('tablecell_close',array()),
321            array('tablerow_close',array()),
322
323            array('table_close',array(69)),
324            array('p_open',array()),
325            array('cdata',array('def')),
326            array('p_close',array()),
327            array('document_end',array()),
328        );
329        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
330    }
331
332    function testCellAlignmentFormatting() {
333        $this->P->addMode('table',new Doku_Parser_Mode_Table());
334        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
335        $this->P->parse('
336abc
337|  **X** | Y  ^  Z  |
338def');
339
340        $calls = array (
341            array('document_start',array()),
342            array('p_open',array()),
343            array('cdata',array("\n\nabc")),
344            array('p_close',array()),
345            array('table_open',array(3, 1, 6)),
346            array('tablerow_open',array()),
347            array('tablecell_open',array(1,'right',1)),
348            array('cdata',array('  ')),
349            array('strong_open',array()),
350            array('cdata',array('X')),
351            array('strong_close',array()),
352            array('cdata',array(' ')),
353            array('tablecell_close',array()),
354            array('tablecell_open',array(1,'left',1)),
355            array('cdata',array(' Y  ')),
356            array('tablecell_close',array()),
357            array('tableheader_open',array(1,'center',1)),
358            array('cdata',array('  Z  ')),
359            array('tableheader_close',array()),
360            array('tablerow_close',array()),
361            array('table_close',array(27)),
362            array('p_open',array()),
363            array('cdata',array('def')),
364            array('p_close',array()),
365            array('document_end',array()),
366        );
367
368        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
369
370    }
371
372    function testTableEol() {
373        $this->P->addMode('table',new Doku_Parser_Mode_Table());
374        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
375        $this->P->parse('
376abc
377| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
378| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
379def');
380        $calls = array (
381            array('document_start',array()),
382            array('p_open',array()),
383            array('cdata',array("abc")),
384            array('p_close',array()),
385            array('table_open',array(3, 2, 6)),
386            array('tablerow_open',array()),
387            array('tablecell_open',array(1,'left',1)),
388            array('cdata',array(' Row 0 Col 1    ')),
389            array('tablecell_close',array()),
390            array('tablecell_open',array(1,'left',1)),
391            array('cdata',array(' Row 0 Col 2     ')),
392            array('tablecell_close',array()),
393            array('tablecell_open',array(1,'left',1)),
394            array('cdata',array(' Row 0 Col 3        ')),
395            array('tablecell_close',array()),
396            array('tablerow_close',array()),
397            array('tablerow_open',array()),
398            array('tablecell_open',array(1,'left',1)),
399            array('cdata',array(' Row 1 Col 1    ')),
400            array('tablecell_close',array()),
401            array('tablecell_open',array(1,'left',1)),
402            array('cdata',array(' Row 1 Col 2     ')),
403            array('tablecell_close',array()),
404            array('tablecell_open',array(1,'left',1)),
405            array('cdata',array(' Row 1 Col 3        ')),
406            array('tablecell_close',array()),
407            array('tablerow_close',array()),
408            array('table_close',array(121)),
409            array('p_open',array()),
410            array('cdata',array('def')),
411            array('p_close',array()),
412            array('document_end',array()),
413        );
414        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
415    }
416
417    // This is really a failing test - formatting able to spread across cols
418    // Problem is fixing it would mean a major rewrite of table handling
419    function testTableStrong() {
420        $this->P->addMode('table',new Doku_Parser_Mode_Table());
421        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
422        $this->P->parse('
423abc
424| **Row 0 Col 1**    | **Row 0 Col 2     | Row 0 Col 3**        |
425| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
426def');
427        $calls = array (
428            array('document_start',array()),
429            array('p_open',array()),
430            array('cdata',array("\n\nabc")),
431            array('p_close',array()),
432            array('table_open',array(3, 2, 6)),
433            array('tablerow_open',array()),
434            array('tablecell_open',array(1,'left',1)),
435            array('cdata',array(' ')),
436            array('strong_open',array()),
437            array('cdata',array('Row 0 Col 1')),
438            array('strong_close',array()),
439            array('cdata',array('    ')),
440            array('tablecell_close',array()),
441            array('tablecell_open',array(1,'left',1)),
442            array('cdata',array(' ')),
443            array('strong_open',array()),
444            array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
445            array('strong_close',array()),
446            array('cdata',array('        ')),
447            array('tablecell_close',array()),
448            array('tablecell_open',array(1,null,1)),
449            array('cdata',array('')),
450            array('tablecell_close',array()),
451            array('tablerow_close',array()),
452            array('tablerow_open',array()),
453            array('tablecell_open',array(1,'left',1)),
454            array('cdata',array(' Row 1 Col 1    ')),
455            array('tablecell_close',array()),
456            array('tablecell_open',array(1,'left',1)),
457            array('cdata',array(' Row 1 Col 2     ')),
458            array('tablecell_close',array()),
459            array('tablecell_open',array(1,'left',1)),
460            array('cdata',array(' Row 1 Col 3        ')),
461            array('tablecell_close',array()),
462            array('tablerow_close',array()),
463            array('table_close',array(129)),
464            array('p_open',array()),
465            array('cdata',array('def')),
466            array('p_close',array()),
467            array('document_end',array()),
468        );
469        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
470    }
471
472    // This is really a failing test - unformatted able to spread across cols
473    // Problem is fixing it would mean a major rewrite of table handling
474    function testTableUnformatted() {
475        $this->P->addMode('table',new Doku_Parser_Mode_Table());
476        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
477        $this->P->parse('
478abc
479| <nowiki>Row 0 Col 1</nowiki>    | <nowiki>Row 0 Col 2     | Row 0 Col 3</nowiki>        |
480| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
481def');
482        $calls = array (
483            array('document_start',array()),
484            array('p_open',array()),
485            array('cdata',array("\n\nabc")),
486            array('p_close',array()),
487            array('table_open',array(3, 2, 6)),
488            array('tablerow_open',array()),
489            array('tablecell_open',array(1,'left',1)),
490            array('cdata',array(' ')),
491            array('unformatted',array('Row 0 Col 1')),
492            array('cdata',array('    ')),
493            array('tablecell_close',array()),
494            array('tablecell_open',array(1,'left',1)),
495            array('cdata',array(' ')),
496            array('unformatted',array('Row 0 Col 2     | Row 0 Col 3')),
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(155)),
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    function testTableLinebreak() {
524        $this->P->addMode('table',new Doku_Parser_Mode_Table());
525        $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak());
526        $this->P->parse('
527abc
528| Row 0\\\\ Col 1    | Row 0 Col 2     | Row 0 Col 3        |
529| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
530def');
531        $calls = array (
532            array('document_start',array()),
533            array('p_open',array()),
534            array('cdata',array("\n\nabc")),
535            array('p_close',array()),
536            array('table_open',array(3, 2, 6)),
537            array('tablerow_open',array()),
538            array('tablecell_open',array(1,'left',1)),
539            array('cdata',array(' Row 0')),
540            array('linebreak',array()),
541            array('cdata',array('Col 1    ')),
542            array('tablecell_close',array()),
543            array('tablecell_open',array(1,'left',1)),
544            array('cdata',array(' Row 0 Col 2     ')),
545            array('tablecell_close',array()),
546            array('tablecell_open',array(1,'left',1)),
547            array('cdata',array(' Row 0 Col 3        ')),
548            array('tablecell_close',array()),
549            array('tablerow_close',array()),
550            array('tablerow_open',array()),
551            array('tablecell_open',array(1,'left',1)),
552            array('cdata',array(' Row 1 Col 1    ')),
553            array('tablecell_close',array()),
554            array('tablecell_open',array(1,'left',1)),
555            array('cdata',array(' Row 1 Col 2     ')),
556            array('tablecell_close',array()),
557            array('tablecell_open',array(1,'left',1)),
558            array('cdata',array(' Row 1 Col 3        ')),
559            array('tablecell_close',array()),
560            array('tablerow_close',array()),
561            array('table_close',array(123)),
562            array('p_open',array()),
563            array('cdata',array('def')),
564            array('p_close',array()),
565            array('document_end',array()),
566        );
567
568        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
569    }
570
571    // This is really a failing test - footnote able to spread across cols
572    // Problem is fixing it would mean a major rewrite of table handling
573    function testTableFootnote() {
574        $this->P->addMode('table',new Doku_Parser_Mode_Table());
575        $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote());
576        $this->P->parse('
577abc
578| ((Row 0 Col 1))    | ((Row 0 Col 2     | Row 0 Col 3))        |
579| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
580def');
581        $calls = array (
582            array('document_start',array()),
583            array('p_open',array()),
584            array('cdata',array("\n\nabc")),
585            array('p_close',array()),
586            array('table_open',array(3, 2, 6)),
587            array('tablerow_open',array()),
588            array('tablecell_open',array(1,'left',1)),
589            array('cdata',array(' ')),
590            array('nest', array ( array (
591              array('footnote_open',array()),
592              array('cdata',array('Row 0 Col 1')),
593              array('footnote_close',array()),
594            ))),
595            array('cdata',array('    ')),
596            array('tablecell_close',array()),
597            array('tablecell_open',array(1,'left',1)),
598            array('cdata',array(' ')),
599            array('nest', array ( array (
600              array('footnote_open',array()),
601              array('cdata',array('Row 0 Col 2     | Row 0 Col 3')),
602              array('footnote_close',array()),
603            ))),
604            array('cdata',array('        ')),
605            array('tablecell_close',array()),
606            array('tablecell_open',array(1,null,1)),
607            array('cdata',array('')),
608            array('tablecell_close',array()),
609            array('tablerow_close',array()),
610            array('tablerow_open',array()),
611            array('tablecell_open',array(1,'left',1)),
612            array('cdata',array(' Row 1 Col 1    ')),
613            array('tablecell_close',array()),
614            array('tablecell_open',array(1,'left',1)),
615            array('cdata',array(' Row 1 Col 2     ')),
616            array('tablecell_close',array()),
617            array('tablecell_open',array(1,'left',1)),
618            array('cdata',array(' Row 1 Col 3        ')),
619            array('tablecell_close',array()),
620            array('tablerow_close',array()),
621            array('table_close',array(129)),
622            array('p_open',array()),
623            array('cdata',array('def')),
624            array('p_close',array()),
625            array('document_end',array()),
626        );
627        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
628    }
629
630    function testTable_FS1833() {
631        $syntax = " \n| Row 0 Col 1    |\n";
632        $this->P->addMode('table',new Doku_Parser_Mode_Table());
633        $this->P->parse($syntax);
634        $calls = array (
635            array('document_start',array()),
636            array('table_open',array(1, 1, 2)),
637            array('tablerow_open',array()),
638            array('tablecell_open',array(1,'left',1)),
639            array('cdata',array(' Row 0 Col 1    ')),
640            array('tablecell_close',array()),
641            array('tablerow_close',array()),
642            array('table_close',array(strlen($syntax))),
643            array('document_end',array()),
644        );
645        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
646    }
647
648}
649
650