P->addMode('table',new Table());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(121)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableWinEOL() {
$this->P->addMode('table',new Table());
$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");
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(121)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testEmptyTable() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
|
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(0, 1, 6)),
array('tablerow_open',array()),
array('tablerow_close',array()),
array('table_close',array(7)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableHeaders() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X | Y ^ Z |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 1, 6)),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X ')),
array('tableheader_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array(19)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableHead() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X ^ Y ^ Z ^
| x | y | z |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablethead_open',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Y ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablethead_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' x ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' y ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' z ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(33)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableHeadOneRowTable() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X ^ Y ^ Z ^
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 1, 6)),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Y ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array(19)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableHeadMultiline() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ Y2 ^ Z2 ^
| A | B | C |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 3, 6)),
array('tablethead_open',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Y1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z1 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X2 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Y2 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z2 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablethead_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' A ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' B ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' C ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(53)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testCellAlignment() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| X | Y ^ Z |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 1, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'right',1)),
array('cdata',array(' X ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center',1)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array(23)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testCellSpan() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| d || e |
| f ^ ^|
||||
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 3, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(2,'right',1)),
array('cdata',array(' d ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' e ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' f ')),
array('tablecell_close',array()),
array('tableheader_open',array(2,NULL,1)),
array('cdata',array(' ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablerow_close',array()),
array('table_close',array(31)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testCellRowSpan() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
| a | c:::||
|:::^ d | e|
|b ^ ::: |:::f|
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 3, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,2)),
array('cdata',array(' a ')),
array('tablecell_close',array()),
array('tablecell_open',array(2,'right',1)),
array('cdata',array(' c:::')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,'left',2)),
array('cdata',array(' d ')),
array('tableheader_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' e')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array('b ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(':::f')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(51)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testCellRowSpanFirstRow() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
|::: ^ d:::^:::| ::: |
| b ^ e | | ::: |
|c ^ ::: | |:::|
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(4, 3, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'right',1)),
array('cdata',array(' d:::')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array('')),
array('tableheader_close',array()),
array('tablecell_open',array(1,NULL,3)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' b ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'left',2)),
array('cdata',array(' e ')),
array('tableheader_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array('c ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(69)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testRowSpanTableHead() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ ::: ^ Z2 ^
| A3 | B3 | C3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 3, 6)),
array('tablethead_open',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,2)),
array('cdata',array(' Y1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z1 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X2 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z2 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablethead_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' A3 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' B3 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' C3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(57)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testRowSpanAcrossTableHeadBoundary() {
$this->P->addMode('table',new Table());
$this->P->parse('
abc
^ X1 ^ Y1 ^ Z1 ^
^ X2 ^ ::: ^ Z2 ^
| A3 | ::: | C3 |
| A4 | ::: | C4 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 4, 6)),
array('tablethead_open',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,2)),
array('cdata',array(' Y1 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z1 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' X2 ')),
array('tableheader_close',array()),
array('tableheader_open',array(1,NULL,1)),
array('cdata',array(' Z2 ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('tablethead_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' A3 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,2)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' C3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' A4 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL,1)),
array('cdata',array(' C4 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(76)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testCellAlignmentFormatting() {
$this->P->addMode('table',new Table());
$this->P->addMode('strong',new Formatting('strong'));
$this->P->parse('
abc
| **X** | Y ^ Z |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 1, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'right',1)),
array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('X')),
array('strong_close',array()),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center',1)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array(27)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableEol() {
$this->P->addMode('table',new Table());
$this->P->addMode('eol',new Eol());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("abc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(121)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
// This is really a failing test - formatting able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableStrong() {
$this->P->addMode('table',new Table());
$this->P->addMode('strong',new Formatting('strong'));
$this->P->parse('
abc
| **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('Row 0 Col 1')),
array('strong_close',array()),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('Row 0 Col 2 | Row 0 Col 3')),
array('strong_close',array()),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(129)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
// This is really a failing test - unformatted able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableUnformatted() {
$this->P->addMode('table',new Table());
$this->P->addMode('unformatted',new Unformatted());
$this->P->parse('
abc
| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('unformatted',array('Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(155)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTableLinebreak() {
$this->P->addMode('table',new Table());
$this->P->addMode('linebreak',new Linebreak());
$this->P->parse('
abc
| Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0')),
array('linebreak',array()),
array('cdata',array('Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(123)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
// This is really a failing test - footnote able to spread across cols
// Problem is fixing it would mean a major rewrite of table handling
function testTableFootnote() {
$this->P->addMode('table',new Table());
$this->P->addMode('footnote',new Footnote());
$this->P->parse('
abc
| ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) |
| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 |
def');
$calls = array (
array('document_start',array()),
array('p_open',array()),
array('cdata',array("\n\nabc")),
array('p_close',array()),
array('table_open',array(3, 2, 6)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('nest', array ( array (
array('footnote_open',array()),
array('cdata',array('Row 0 Col 1')),
array('footnote_close',array()),
))),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' ')),
array('nest', array ( array (
array('footnote_open',array()),
array('cdata',array('Row 0 Col 2 | Row 0 Col 3')),
array('footnote_close',array()),
))),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 1 Col 3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(129)),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls));
}
function testTable_FS1833() {
$syntax = " \n| Row 0 Col 1 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = array (
array('document_start',array()),
array('table_open',array(1, 1, 2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left',1)),
array('cdata',array(' Row 0 Col 1 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(strlen($syntax))),
array('document_end',array()),
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
/**
* missing cells in one row get filled up...
*/
function testTable_CellFix() {
$syntax = "\n| r1c1 | r1c2 | r1c3 |\n| r2c1 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = array (
array('document_start',array()),
array('table_open',array(3, 2, 2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r1c1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r1c2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r1c3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r2c1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(strlen($syntax))),
array('document_end',array()),
);
$this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls));
}
/**
* ... even if the longer row comes later
*/
function testTable_CellFix2() {
$syntax = "\n| r1c1 |\n| r2c1 | r2c2 | r2c3 |\n";
$this->P->addMode('table',new Table());
$this->P->parse($syntax);
$calls = array (
array('document_start',array()),
array('table_open',array(3, 2, 2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r1c1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array('')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r2c1 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r2c2 ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,null,1)),
array('cdata',array(' r2c3 ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array(strlen($syntax))),
array('document_end',array()),
);
$this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls));
}
}