UnitTestCase('TestOfDoku_Parser_Table');
}
function testTable() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testTableWinEOL() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testEmptyTable() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testTableHeaders() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tableheader_open',array(1,NULL)),
array('cdata',array(' X ')),
array('tableheader_close',array()),
array('tablecell_open',array(1,NULL)),
array('cdata',array(' Y ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,NULL)),
array('cdata',array(' Z ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCellAlignment() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'right')),
array('cdata',array(' ')),
array('cdata',array('X ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Y')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center')),
array('cdata',array(' ')),
array('cdata',array('Z')),
array('cdata',array(' ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCellSpan() {
$this->P->addMode('table',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(2,'right')),
array('cdata',array(' ')),
array('cdata',array('d ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,NULL)),
array('cdata',array(' e ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(3,NULL)),
array('cdata',array(' f ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testCellAlignmentFormatting() {
$this->P->addMode('table',new Doku_Parser_Mode_Table());
$this->P->addMode('strong',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'right')),
array('cdata',array(' ')),
array('strong_open',array()),
array('cdata',array('X')),
array('strong_close',array()),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Y')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tableheader_open',array(1,'center')),
array('cdata',array(' ')),
array('cdata',array('Z')),
array('cdata',array(' ')),
array('tableheader_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testTableEol() {
$this->P->addMode('table',new Doku_Parser_Mode_Table());
$this->P->addMode('eol',new Doku_Parser_Mode_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('p_close',array()),
array('p_open',array()),
array('cdata',array("abc")),
array('p_close',array()),
array('table_open',array(3,2)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def')),
array('p_close',array()),
array('p_open',array()),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$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 Doku_Parser_Mode_Table());
$this->P->addMode('strong',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
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')),
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('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$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 Doku_Parser_Mode_Table());
$this->P->addMode('unformatted',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('unformatted',array('Row 0 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
function testTableLinebreak() {
$this->P->addMode('table',new Doku_Parser_Mode_Table());
$this->P->addMode('linebreak',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0')),
array('linebreak',array()),
array('cdata',array('Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 0 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$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 Doku_Parser_Mode_Table());
$this->P->addMode('footnote',new Doku_Parser_Mode_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)),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
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')),
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('tablerow_close',array()),
array('tablerow_open',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 1')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 2')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablecell_open',array(1,'left')),
array('cdata',array(' Row 1 Col 3')),
array('cdata',array(' ')),
array('tablecell_close',array()),
array('tablerow_close',array()),
array('table_close',array()),
array('p_open',array()),
array('cdata',array('def'."\n")),
array('p_close',array()),
array('document_end',array()),
);
$this->assertEqual(array_map('stripbyteindex',$this->H->calls),$calls);
}
}
/**
* Conditional test runner
*/
if (!defined('TEST_RUNNING')) {
define('TEST_RUNNING', true);
$test = &new TestOfDoku_Parser_Table();
$test->run(new HtmlReporter());
}