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