1f8369d7dSTobias Sarnowski<?php 236dc94bbSAndreas Gohr 3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Eol; 4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Footnote; 5*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Formatting; 6*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Linebreak; 7*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Table; 8*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Unformatted; 936dc94bbSAndreas Gohr 10f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 11f8369d7dSTobias Sarnowski 12f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Table extends TestOfDoku_Parser { 13f8369d7dSTobias Sarnowski 14f8369d7dSTobias Sarnowski function testTable() { 1536dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 16f8369d7dSTobias Sarnowski $this->P->parse(' 17f8369d7dSTobias Sarnowskiabc 18f8369d7dSTobias Sarnowski| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 19f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 20f8369d7dSTobias Sarnowskidef'); 21f8369d7dSTobias Sarnowski $calls = array ( 22f8369d7dSTobias Sarnowski array('document_start',array()), 23f8369d7dSTobias Sarnowski array('p_open',array()), 24f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 25f8369d7dSTobias Sarnowski array('p_close',array()), 26f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 27f8369d7dSTobias Sarnowski array('tablerow_open',array()), 28f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 29f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 30f8369d7dSTobias Sarnowski array('tablecell_close',array()), 31f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 32f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 33f8369d7dSTobias Sarnowski array('tablecell_close',array()), 34f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 35f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 36f8369d7dSTobias Sarnowski array('tablecell_close',array()), 37f8369d7dSTobias Sarnowski array('tablerow_close',array()), 38f8369d7dSTobias Sarnowski array('tablerow_open',array()), 39f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 40f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 41f8369d7dSTobias Sarnowski array('tablecell_close',array()), 42f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 43f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 44f8369d7dSTobias Sarnowski array('tablecell_close',array()), 45f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 46f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 47f8369d7dSTobias Sarnowski array('tablecell_close',array()), 48f8369d7dSTobias Sarnowski array('tablerow_close',array()), 49f8369d7dSTobias Sarnowski array('table_close',array(121)), 50f8369d7dSTobias Sarnowski array('p_open',array()), 51f8369d7dSTobias Sarnowski array('cdata',array('def')), 52f8369d7dSTobias Sarnowski array('p_close',array()), 53f8369d7dSTobias Sarnowski array('document_end',array()), 54f8369d7dSTobias Sarnowski ); 55e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 56f8369d7dSTobias Sarnowski } 57f8369d7dSTobias Sarnowski 58f8369d7dSTobias Sarnowski function testTableWinEOL() { 5936dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 60f8369d7dSTobias 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"); 61f8369d7dSTobias Sarnowski $calls = array ( 62f8369d7dSTobias Sarnowski array('document_start',array()), 63f8369d7dSTobias Sarnowski array('p_open',array()), 64f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 65f8369d7dSTobias Sarnowski array('p_close',array()), 66f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 67f8369d7dSTobias Sarnowski array('tablerow_open',array()), 68f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 69f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 70f8369d7dSTobias Sarnowski array('tablecell_close',array()), 71f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 72f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 73f8369d7dSTobias Sarnowski array('tablecell_close',array()), 74f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 75f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 76f8369d7dSTobias Sarnowski array('tablecell_close',array()), 77f8369d7dSTobias Sarnowski array('tablerow_close',array()), 78f8369d7dSTobias Sarnowski array('tablerow_open',array()), 79f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 80f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 81f8369d7dSTobias Sarnowski array('tablecell_close',array()), 82f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 83f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 84f8369d7dSTobias Sarnowski array('tablecell_close',array()), 85f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 86f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 87f8369d7dSTobias Sarnowski array('tablecell_close',array()), 88f8369d7dSTobias Sarnowski array('tablerow_close',array()), 89f8369d7dSTobias Sarnowski array('table_close',array(121)), 90f8369d7dSTobias Sarnowski array('p_open',array()), 91f8369d7dSTobias Sarnowski array('cdata',array('def')), 92f8369d7dSTobias Sarnowski array('p_close',array()), 93f8369d7dSTobias Sarnowski array('document_end',array()), 94f8369d7dSTobias Sarnowski ); 95e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 96f8369d7dSTobias Sarnowski } 97f8369d7dSTobias Sarnowski 98f8369d7dSTobias Sarnowski function testEmptyTable() { 9936dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 100f8369d7dSTobias Sarnowski $this->P->parse(' 101f8369d7dSTobias Sarnowskiabc 102f8369d7dSTobias Sarnowski| 103f8369d7dSTobias Sarnowskidef'); 104f8369d7dSTobias Sarnowski 105f8369d7dSTobias Sarnowski $calls = array ( 106f8369d7dSTobias Sarnowski array('document_start',array()), 107f8369d7dSTobias Sarnowski array('p_open',array()), 108f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 109f8369d7dSTobias Sarnowski array('p_close',array()), 110f8369d7dSTobias Sarnowski array('table_open',array(0, 1, 6)), 111f8369d7dSTobias Sarnowski array('tablerow_open',array()), 112f8369d7dSTobias Sarnowski array('tablerow_close',array()), 113f8369d7dSTobias Sarnowski array('table_close',array(7)), 114f8369d7dSTobias Sarnowski array('p_open',array()), 115f8369d7dSTobias Sarnowski array('cdata',array('def')), 116f8369d7dSTobias Sarnowski array('p_close',array()), 117f8369d7dSTobias Sarnowski array('document_end',array()), 118f8369d7dSTobias Sarnowski ); 119f8369d7dSTobias Sarnowski 120e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 121f8369d7dSTobias Sarnowski } 122f8369d7dSTobias Sarnowski 123f8369d7dSTobias Sarnowski function testTableHeaders() { 12436dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 125f8369d7dSTobias Sarnowski $this->P->parse(' 126f8369d7dSTobias Sarnowskiabc 127f8369d7dSTobias Sarnowski^ X | Y ^ Z | 128f8369d7dSTobias Sarnowskidef'); 129f8369d7dSTobias Sarnowski 130f8369d7dSTobias Sarnowski $calls = array ( 131f8369d7dSTobias Sarnowski array('document_start',array()), 132f8369d7dSTobias Sarnowski array('p_open',array()), 133f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 134f8369d7dSTobias Sarnowski array('p_close',array()), 135f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 136f8369d7dSTobias Sarnowski array('tablerow_open',array()), 137f8369d7dSTobias Sarnowski array('tableheader_open',array(1,NULL,1)), 138f8369d7dSTobias Sarnowski array('cdata',array(' X ')), 139f8369d7dSTobias Sarnowski array('tableheader_close',array()), 140f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 141f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 142f8369d7dSTobias Sarnowski array('tablecell_close',array()), 143f8369d7dSTobias Sarnowski array('tableheader_open',array(1,NULL,1)), 144f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 145f8369d7dSTobias Sarnowski array('tableheader_close',array()), 146f8369d7dSTobias Sarnowski array('tablerow_close',array()), 147688ce8d8SChristopher Smith array('table_close',array(19)), 148688ce8d8SChristopher Smith array('p_open',array()), 149688ce8d8SChristopher Smith array('cdata',array('def')), 150688ce8d8SChristopher Smith array('p_close',array()), 151688ce8d8SChristopher Smith array('document_end',array()), 152688ce8d8SChristopher Smith ); 153688ce8d8SChristopher Smith 154688ce8d8SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 155688ce8d8SChristopher Smith 156688ce8d8SChristopher Smith } 157688ce8d8SChristopher Smith 158688ce8d8SChristopher Smith function testTableHead() { 15936dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 160688ce8d8SChristopher Smith $this->P->parse(' 161688ce8d8SChristopher Smithabc 162688ce8d8SChristopher Smith^ X ^ Y ^ Z ^ 163c2a1d01eSChristopher Smith| x | y | z | 164688ce8d8SChristopher Smithdef'); 165688ce8d8SChristopher Smith 166688ce8d8SChristopher Smith $calls = array ( 167688ce8d8SChristopher Smith array('document_start',array()), 168688ce8d8SChristopher Smith array('p_open',array()), 169688ce8d8SChristopher Smith array('cdata',array("\n\nabc")), 170688ce8d8SChristopher Smith array('p_close',array()), 171c2a1d01eSChristopher Smith array('table_open',array(3, 2, 6)), 172688ce8d8SChristopher Smith array('tablethead_open',array()), 173688ce8d8SChristopher Smith array('tablerow_open',array()), 174688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 175688ce8d8SChristopher Smith array('cdata',array(' X ')), 176688ce8d8SChristopher Smith array('tableheader_close',array()), 177688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 178688ce8d8SChristopher Smith array('cdata',array(' Y ')), 179688ce8d8SChristopher Smith array('tableheader_close',array()), 180688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 181688ce8d8SChristopher Smith array('cdata',array(' Z ')), 182688ce8d8SChristopher Smith array('tableheader_close',array()), 183688ce8d8SChristopher Smith array('tablerow_close',array()), 184f05a1cc5SGerrit Uitslag array('tablethead_close',array()), 185c2a1d01eSChristopher Smith array('tablerow_open',array()), 186c2a1d01eSChristopher Smith array('tablecell_open',array(1,NULL,1)), 187c2a1d01eSChristopher Smith array('cdata',array(' x ')), 188c2a1d01eSChristopher Smith array('tablecell_close',array()), 189c2a1d01eSChristopher Smith array('tablecell_open',array(1,NULL,1)), 190c2a1d01eSChristopher Smith array('cdata',array(' y ')), 191c2a1d01eSChristopher Smith array('tablecell_close',array()), 192c2a1d01eSChristopher Smith array('tablecell_open',array(1,NULL,1)), 193c2a1d01eSChristopher Smith array('cdata',array(' z ')), 194c2a1d01eSChristopher Smith array('tablecell_close',array()), 195c2a1d01eSChristopher Smith array('tablerow_close',array()), 196c2a1d01eSChristopher Smith array('table_close',array(33)), 197c2a1d01eSChristopher Smith array('p_open',array()), 198c2a1d01eSChristopher Smith array('cdata',array('def')), 199c2a1d01eSChristopher Smith array('p_close',array()), 200c2a1d01eSChristopher Smith array('document_end',array()), 201c2a1d01eSChristopher Smith ); 202c2a1d01eSChristopher Smith 203c2a1d01eSChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 204c2a1d01eSChristopher Smith 205c2a1d01eSChristopher Smith } 206c2a1d01eSChristopher Smith 207c2a1d01eSChristopher Smith function testTableHeadOneRowTable() { 20836dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 209c2a1d01eSChristopher Smith $this->P->parse(' 210c2a1d01eSChristopher Smithabc 211c2a1d01eSChristopher Smith^ X ^ Y ^ Z ^ 212c2a1d01eSChristopher Smithdef'); 213c2a1d01eSChristopher Smith 214c2a1d01eSChristopher Smith $calls = array ( 215c2a1d01eSChristopher Smith array('document_start',array()), 216c2a1d01eSChristopher Smith array('p_open',array()), 217c2a1d01eSChristopher Smith array('cdata',array("\n\nabc")), 218c2a1d01eSChristopher Smith array('p_close',array()), 219c2a1d01eSChristopher Smith array('table_open',array(3, 1, 6)), 220c2a1d01eSChristopher Smith array('tablerow_open',array()), 221c2a1d01eSChristopher Smith array('tableheader_open',array(1,NULL,1)), 222c2a1d01eSChristopher Smith array('cdata',array(' X ')), 223c2a1d01eSChristopher Smith array('tableheader_close',array()), 224c2a1d01eSChristopher Smith array('tableheader_open',array(1,NULL,1)), 225c2a1d01eSChristopher Smith array('cdata',array(' Y ')), 226c2a1d01eSChristopher Smith array('tableheader_close',array()), 227c2a1d01eSChristopher Smith array('tableheader_open',array(1,NULL,1)), 228c2a1d01eSChristopher Smith array('cdata',array(' Z ')), 229c2a1d01eSChristopher Smith array('tableheader_close',array()), 230c2a1d01eSChristopher Smith array('tablerow_close',array()), 231f8369d7dSTobias Sarnowski array('table_close',array(19)), 232f8369d7dSTobias Sarnowski array('p_open',array()), 233f8369d7dSTobias Sarnowski array('cdata',array('def')), 234f8369d7dSTobias Sarnowski array('p_close',array()), 235f8369d7dSTobias Sarnowski array('document_end',array()), 236f8369d7dSTobias Sarnowski ); 237f8369d7dSTobias Sarnowski 238688ce8d8SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 239f8369d7dSTobias Sarnowski 240f8369d7dSTobias Sarnowski } 241f8369d7dSTobias Sarnowski 242688ce8d8SChristopher Smith function testTableHeadMultiline() { 24336dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 244f05a1cc5SGerrit Uitslag $this->P->parse(' 245f05a1cc5SGerrit Uitslagabc 246688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^ 247688ce8d8SChristopher Smith^ X2 ^ Y2 ^ Z2 ^ 248f05a1cc5SGerrit Uitslag| A | B | C | 249f05a1cc5SGerrit Uitslagdef'); 250f05a1cc5SGerrit Uitslag 251f05a1cc5SGerrit Uitslag $calls = array ( 252f05a1cc5SGerrit Uitslag array('document_start',array()), 253f05a1cc5SGerrit Uitslag array('p_open',array()), 254f05a1cc5SGerrit Uitslag array('cdata',array("\n\nabc")), 255f05a1cc5SGerrit Uitslag array('p_close',array()), 256688ce8d8SChristopher Smith array('table_open',array(3, 3, 6)), 257f05a1cc5SGerrit Uitslag array('tablethead_open',array()), 258f05a1cc5SGerrit Uitslag array('tablerow_open',array()), 259f05a1cc5SGerrit Uitslag array('tableheader_open',array(1,NULL,1)), 260688ce8d8SChristopher Smith array('cdata',array(' X1 ')), 261f05a1cc5SGerrit Uitslag array('tableheader_close',array()), 262f05a1cc5SGerrit Uitslag array('tableheader_open',array(1,NULL,1)), 263688ce8d8SChristopher Smith array('cdata',array(' Y1 ')), 264688ce8d8SChristopher Smith array('tableheader_close',array()), 265688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 266688ce8d8SChristopher Smith array('cdata',array(' Z1 ')), 267688ce8d8SChristopher Smith array('tableheader_close',array()), 268688ce8d8SChristopher Smith array('tablerow_close',array()), 269688ce8d8SChristopher Smith array('tablerow_open',array()), 270688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 271688ce8d8SChristopher Smith array('cdata',array(' X2 ')), 272688ce8d8SChristopher Smith array('tableheader_close',array()), 273688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 274688ce8d8SChristopher Smith array('cdata',array(' Y2 ')), 275688ce8d8SChristopher Smith array('tableheader_close',array()), 276688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 277688ce8d8SChristopher Smith array('cdata',array(' Z2 ')), 278f05a1cc5SGerrit Uitslag array('tableheader_close',array()), 279f05a1cc5SGerrit Uitslag array('tablerow_close',array()), 280f05a1cc5SGerrit Uitslag array('tablethead_close',array()), 281f05a1cc5SGerrit Uitslag array('tablerow_open',array()), 282f05a1cc5SGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 283f05a1cc5SGerrit Uitslag array('cdata',array(' A ')), 284f05a1cc5SGerrit Uitslag array('tablecell_close',array()), 285f05a1cc5SGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 286f05a1cc5SGerrit Uitslag array('cdata',array(' B ')), 287f05a1cc5SGerrit Uitslag array('tablecell_close',array()), 288f05a1cc5SGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 289f05a1cc5SGerrit Uitslag array('cdata',array(' C ')), 290f05a1cc5SGerrit Uitslag array('tablecell_close',array()), 291f05a1cc5SGerrit Uitslag array('tablerow_close',array()), 292688ce8d8SChristopher Smith array('table_close',array(53)), 293f05a1cc5SGerrit Uitslag array('p_open',array()), 294f05a1cc5SGerrit Uitslag array('cdata',array('def')), 295f05a1cc5SGerrit Uitslag array('p_close',array()), 296f05a1cc5SGerrit Uitslag array('document_end',array()), 297f05a1cc5SGerrit Uitslag ); 298f05a1cc5SGerrit Uitslag 299688ce8d8SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 300f05a1cc5SGerrit Uitslag 301f05a1cc5SGerrit Uitslag } 302f05a1cc5SGerrit Uitslag 303f8369d7dSTobias Sarnowski function testCellAlignment() { 30436dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 305f8369d7dSTobias Sarnowski $this->P->parse(' 306f8369d7dSTobias Sarnowskiabc 307f8369d7dSTobias Sarnowski| X | Y ^ Z | 308f8369d7dSTobias Sarnowskidef'); 309f8369d7dSTobias Sarnowski 310f8369d7dSTobias Sarnowski $calls = array ( 311f8369d7dSTobias Sarnowski array('document_start',array()), 312f8369d7dSTobias Sarnowski array('p_open',array()), 313f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 314f8369d7dSTobias Sarnowski array('p_close',array()), 315f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 316f8369d7dSTobias Sarnowski array('tablerow_open',array()), 317f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'right',1)), 318f8369d7dSTobias Sarnowski array('cdata',array(' X ')), 319f8369d7dSTobias Sarnowski array('tablecell_close',array()), 320f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 321f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 322f8369d7dSTobias Sarnowski array('tablecell_close',array()), 323f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'center',1)), 324f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 325f8369d7dSTobias Sarnowski array('tableheader_close',array()), 326f8369d7dSTobias Sarnowski array('tablerow_close',array()), 327f8369d7dSTobias Sarnowski array('table_close',array(23)), 328f8369d7dSTobias Sarnowski array('p_open',array()), 329f8369d7dSTobias Sarnowski array('cdata',array('def')), 330f8369d7dSTobias Sarnowski array('p_close',array()), 331f8369d7dSTobias Sarnowski array('document_end',array()), 332f8369d7dSTobias Sarnowski ); 333f8369d7dSTobias Sarnowski 334e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 335f8369d7dSTobias Sarnowski } 336f8369d7dSTobias Sarnowski 337f8369d7dSTobias Sarnowski function testCellSpan() { 33836dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 339f8369d7dSTobias Sarnowski $this->P->parse(' 340f8369d7dSTobias Sarnowskiabc 341f8369d7dSTobias Sarnowski| d || e | 342f8369d7dSTobias Sarnowski| f ^ ^| 343f8369d7dSTobias Sarnowski|||| 344f8369d7dSTobias Sarnowskidef'); 345f8369d7dSTobias Sarnowski 346f8369d7dSTobias Sarnowski $calls = array ( 347f8369d7dSTobias Sarnowski array('document_start',array()), 348f8369d7dSTobias Sarnowski array('p_open',array()), 349f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 350f8369d7dSTobias Sarnowski array('p_close',array()), 351f8369d7dSTobias Sarnowski array('table_open',array(3, 3, 6)), 352f8369d7dSTobias Sarnowski array('tablerow_open',array()), 353f8369d7dSTobias Sarnowski array('tablecell_open',array(2,'right',1)), 354f8369d7dSTobias Sarnowski array('cdata',array(' d ')), 355f8369d7dSTobias Sarnowski array('tablecell_close',array()), 356f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 357f8369d7dSTobias Sarnowski array('cdata',array(' e ')), 358f8369d7dSTobias Sarnowski array('tablecell_close',array()), 359f8369d7dSTobias Sarnowski array('tablerow_close',array()), 360f8369d7dSTobias Sarnowski array('tablerow_open',array()), 361f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 362f8369d7dSTobias Sarnowski array('cdata',array(' f ')), 363f8369d7dSTobias Sarnowski array('tablecell_close',array()), 364f8369d7dSTobias Sarnowski array('tableheader_open',array(2,NULL,1)), 365f8369d7dSTobias Sarnowski array('cdata',array(' ')), 366f8369d7dSTobias Sarnowski array('tableheader_close',array()), 367f8369d7dSTobias Sarnowski array('tablerow_close',array()), 368f8369d7dSTobias Sarnowski array('tablerow_open',array()), 369f8369d7dSTobias Sarnowski array('tablerow_close',array()), 370f8369d7dSTobias Sarnowski array('table_close',array(31)), 371f8369d7dSTobias Sarnowski array('p_open',array()), 372f8369d7dSTobias Sarnowski array('cdata',array('def')), 373f8369d7dSTobias Sarnowski array('p_close',array()), 374f8369d7dSTobias Sarnowski array('document_end',array()), 375f8369d7dSTobias Sarnowski ); 376e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 377f8369d7dSTobias Sarnowski } 378f8369d7dSTobias Sarnowski 379f8369d7dSTobias Sarnowski function testCellRowSpan() { 38036dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 381f8369d7dSTobias Sarnowski $this->P->parse(' 382f8369d7dSTobias Sarnowskiabc 383f8369d7dSTobias Sarnowski| a | c:::|| 384f8369d7dSTobias Sarnowski|:::^ d | e| 385f8369d7dSTobias Sarnowski|b ^ ::: |:::f| 386f8369d7dSTobias Sarnowskidef'); 387f8369d7dSTobias Sarnowski 388f8369d7dSTobias Sarnowski $calls = array ( 389f8369d7dSTobias Sarnowski array('document_start',array()), 390f8369d7dSTobias Sarnowski array('p_open',array()), 391f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 392f8369d7dSTobias Sarnowski array('p_close',array()), 393f8369d7dSTobias Sarnowski array('table_open',array(3, 3, 6)), 394f8369d7dSTobias Sarnowski array('tablerow_open',array()), 395f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,2)), 396f8369d7dSTobias Sarnowski array('cdata',array(' a ')), 397f8369d7dSTobias Sarnowski array('tablecell_close',array()), 398f8369d7dSTobias Sarnowski array('tablecell_open',array(2,'right',1)), 399f8369d7dSTobias Sarnowski array('cdata',array(' c:::')), 400f8369d7dSTobias Sarnowski array('tablecell_close',array()), 401f8369d7dSTobias Sarnowski array('tablerow_close',array()), 402f8369d7dSTobias Sarnowski array('tablerow_open',array()), 403f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'left',2)), 404f8369d7dSTobias Sarnowski array('cdata',array(' d ')), 405f8369d7dSTobias Sarnowski array('tableheader_close',array()), 406f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 407f8369d7dSTobias Sarnowski array('cdata',array(' e')), 408f8369d7dSTobias Sarnowski array('tablecell_close',array()), 409f8369d7dSTobias Sarnowski array('tablerow_close',array()), 410f8369d7dSTobias Sarnowski array('tablerow_open',array()), 411f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 412f8369d7dSTobias Sarnowski array('cdata',array('b ')), 413f8369d7dSTobias Sarnowski array('tablecell_close',array()), 414f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 415f8369d7dSTobias Sarnowski array('cdata',array(':::f')), 416f8369d7dSTobias Sarnowski array('tablecell_close',array()), 417f8369d7dSTobias Sarnowski array('tablerow_close',array()), 418f8369d7dSTobias Sarnowski array('table_close',array(51)), 419f8369d7dSTobias Sarnowski array('p_open',array()), 420f8369d7dSTobias Sarnowski array('cdata',array('def')), 421f8369d7dSTobias Sarnowski array('p_close',array()), 422f8369d7dSTobias Sarnowski array('document_end',array()), 423f8369d7dSTobias Sarnowski ); 424e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 425f8369d7dSTobias Sarnowski } 4260d9a72ffSGerrit Uitslag 4270d9a72ffSGerrit Uitslag function testCellRowSpanFirstRow() { 42836dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 4290d9a72ffSGerrit Uitslag $this->P->parse(' 4300d9a72ffSGerrit Uitslagabc 4310d9a72ffSGerrit Uitslag|::: ^ d:::^:::| ::: | 4320d9a72ffSGerrit Uitslag| b ^ e | | ::: | 4330d9a72ffSGerrit Uitslag|c ^ ::: | |:::| 4340d9a72ffSGerrit Uitslagdef'); 4350d9a72ffSGerrit Uitslag 4360d9a72ffSGerrit Uitslag $calls = array ( 4370d9a72ffSGerrit Uitslag array('document_start',array()), 4380d9a72ffSGerrit Uitslag array('p_open',array()), 4390d9a72ffSGerrit Uitslag array('cdata',array("\n\nabc")), 4400d9a72ffSGerrit Uitslag array('p_close',array()), 4410d9a72ffSGerrit Uitslag array('table_open',array(4, 3, 6)), 4420d9a72ffSGerrit Uitslag array('tablerow_open',array()), 4430d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 4440d9a72ffSGerrit Uitslag array('cdata',array('')), 4450d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4460d9a72ffSGerrit Uitslag array('tableheader_open',array(1,'right',1)), 4470d9a72ffSGerrit Uitslag array('cdata',array(' d:::')), 4480d9a72ffSGerrit Uitslag array('tableheader_close',array()), 4490d9a72ffSGerrit Uitslag array('tableheader_open',array(1,NULL,1)), 4500d9a72ffSGerrit Uitslag array('cdata',array('')), 4510d9a72ffSGerrit Uitslag array('tableheader_close',array()), 4520d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,3)), 4530d9a72ffSGerrit Uitslag array('cdata',array('')), 4540d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4550d9a72ffSGerrit Uitslag array('tablerow_close',array()), 4560d9a72ffSGerrit Uitslag array('tablerow_open',array()), 4570d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 4580d9a72ffSGerrit Uitslag array('cdata',array(' b ')), 4590d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4600d9a72ffSGerrit Uitslag array('tableheader_open',array(1,'left',2)), 4610d9a72ffSGerrit Uitslag array('cdata',array(' e ')), 4620d9a72ffSGerrit Uitslag array('tableheader_close',array()), 4630d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 4640d9a72ffSGerrit Uitslag array('cdata',array(' ')), 4650d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4660d9a72ffSGerrit Uitslag array('tablerow_close',array()), 4670d9a72ffSGerrit Uitslag array('tablerow_open',array()), 4680d9a72ffSGerrit Uitslag array('tablecell_open',array(1,'left',1)), 4690d9a72ffSGerrit Uitslag array('cdata',array('c ')), 4700d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4710d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 4720d9a72ffSGerrit Uitslag array('cdata',array(' ')), 4730d9a72ffSGerrit Uitslag array('tablecell_close',array()), 4740d9a72ffSGerrit Uitslag array('tablerow_close',array()), 4750d9a72ffSGerrit Uitslag 4760d9a72ffSGerrit Uitslag array('table_close',array(69)), 4770d9a72ffSGerrit Uitslag array('p_open',array()), 4780d9a72ffSGerrit Uitslag array('cdata',array('def')), 4790d9a72ffSGerrit Uitslag array('p_close',array()), 4800d9a72ffSGerrit Uitslag array('document_end',array()), 4810d9a72ffSGerrit Uitslag ); 482e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 4830d9a72ffSGerrit Uitslag } 484f8369d7dSTobias Sarnowski 485688ce8d8SChristopher Smith function testRowSpanTableHead() { 48636dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 487688ce8d8SChristopher Smith $this->P->parse(' 488688ce8d8SChristopher Smithabc 489688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^ 490688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^ 491688ce8d8SChristopher Smith| A3 | B3 | C3 | 492688ce8d8SChristopher Smithdef'); 493688ce8d8SChristopher Smith 494688ce8d8SChristopher Smith $calls = array ( 495688ce8d8SChristopher Smith array('document_start',array()), 496688ce8d8SChristopher Smith array('p_open',array()), 497688ce8d8SChristopher Smith array('cdata',array("\n\nabc")), 498688ce8d8SChristopher Smith array('p_close',array()), 499688ce8d8SChristopher Smith array('table_open',array(3, 3, 6)), 500688ce8d8SChristopher Smith array('tablethead_open',array()), 501688ce8d8SChristopher Smith array('tablerow_open',array()), 502688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 503688ce8d8SChristopher Smith array('cdata',array(' X1 ')), 504688ce8d8SChristopher Smith array('tableheader_close',array()), 505688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,2)), 506688ce8d8SChristopher Smith array('cdata',array(' Y1 ')), 507688ce8d8SChristopher Smith array('tableheader_close',array()), 508688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 509688ce8d8SChristopher Smith array('cdata',array(' Z1 ')), 510688ce8d8SChristopher Smith array('tableheader_close',array()), 511688ce8d8SChristopher Smith array('tablerow_close',array()), 512688ce8d8SChristopher Smith array('tablerow_open',array()), 513688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 514688ce8d8SChristopher Smith array('cdata',array(' X2 ')), 515688ce8d8SChristopher Smith array('tableheader_close',array()), 516688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 517688ce8d8SChristopher Smith array('cdata',array(' Z2 ')), 518688ce8d8SChristopher Smith array('tableheader_close',array()), 519688ce8d8SChristopher Smith array('tablerow_close',array()), 520688ce8d8SChristopher Smith array('tablethead_close',array()), 521688ce8d8SChristopher Smith array('tablerow_open',array()), 522688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 523688ce8d8SChristopher Smith array('cdata',array(' A3 ')), 524688ce8d8SChristopher Smith array('tablecell_close',array()), 525688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 526688ce8d8SChristopher Smith array('cdata',array(' B3 ')), 527688ce8d8SChristopher Smith array('tablecell_close',array()), 528688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 529688ce8d8SChristopher Smith array('cdata',array(' C3 ')), 530688ce8d8SChristopher Smith array('tablecell_close',array()), 531688ce8d8SChristopher Smith array('tablerow_close',array()), 532688ce8d8SChristopher Smith array('table_close',array(57)), 533688ce8d8SChristopher Smith array('p_open',array()), 534688ce8d8SChristopher Smith array('cdata',array('def')), 535688ce8d8SChristopher Smith array('p_close',array()), 536688ce8d8SChristopher Smith array('document_end',array()), 537688ce8d8SChristopher Smith ); 538688ce8d8SChristopher Smith 539688ce8d8SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 540688ce8d8SChristopher Smith 541688ce8d8SChristopher Smith } 542688ce8d8SChristopher Smith 543688ce8d8SChristopher Smith function testRowSpanAcrossTableHeadBoundary() { 54436dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 545688ce8d8SChristopher Smith $this->P->parse(' 546688ce8d8SChristopher Smithabc 547688ce8d8SChristopher Smith^ X1 ^ Y1 ^ Z1 ^ 548688ce8d8SChristopher Smith^ X2 ^ ::: ^ Z2 ^ 549688ce8d8SChristopher Smith| A3 | ::: | C3 | 550688ce8d8SChristopher Smith| A4 | ::: | C4 | 551688ce8d8SChristopher Smithdef'); 552688ce8d8SChristopher Smith 553688ce8d8SChristopher Smith $calls = array ( 554688ce8d8SChristopher Smith array('document_start',array()), 555688ce8d8SChristopher Smith array('p_open',array()), 556688ce8d8SChristopher Smith array('cdata',array("\n\nabc")), 557688ce8d8SChristopher Smith array('p_close',array()), 558688ce8d8SChristopher Smith array('table_open',array(3, 4, 6)), 559688ce8d8SChristopher Smith array('tablethead_open',array()), 560688ce8d8SChristopher Smith array('tablerow_open',array()), 561688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 562688ce8d8SChristopher Smith array('cdata',array(' X1 ')), 563688ce8d8SChristopher Smith array('tableheader_close',array()), 564688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,2)), 565688ce8d8SChristopher Smith array('cdata',array(' Y1 ')), 566688ce8d8SChristopher Smith array('tableheader_close',array()), 567688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 568688ce8d8SChristopher Smith array('cdata',array(' Z1 ')), 569688ce8d8SChristopher Smith array('tableheader_close',array()), 570688ce8d8SChristopher Smith array('tablerow_close',array()), 571688ce8d8SChristopher Smith array('tablerow_open',array()), 572688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 573688ce8d8SChristopher Smith array('cdata',array(' X2 ')), 574688ce8d8SChristopher Smith array('tableheader_close',array()), 575688ce8d8SChristopher Smith array('tableheader_open',array(1,NULL,1)), 576688ce8d8SChristopher Smith array('cdata',array(' Z2 ')), 577688ce8d8SChristopher Smith array('tableheader_close',array()), 578688ce8d8SChristopher Smith array('tablerow_close',array()), 579688ce8d8SChristopher Smith array('tablethead_close',array()), 580688ce8d8SChristopher Smith array('tablerow_open',array()), 581688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 582688ce8d8SChristopher Smith array('cdata',array(' A3 ')), 583688ce8d8SChristopher Smith array('tablecell_close',array()), 584688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,2)), 585688ce8d8SChristopher Smith array('cdata',array('')), 586688ce8d8SChristopher Smith array('tablecell_close',array()), 587688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 588688ce8d8SChristopher Smith array('cdata',array(' C3 ')), 589688ce8d8SChristopher Smith array('tablecell_close',array()), 590688ce8d8SChristopher Smith array('tablerow_close',array()), 591688ce8d8SChristopher Smith array('tablerow_open',array()), 592688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 593688ce8d8SChristopher Smith array('cdata',array(' A4 ')), 594688ce8d8SChristopher Smith array('tablecell_close',array()), 595688ce8d8SChristopher Smith array('tablecell_open',array(1,NULL,1)), 596688ce8d8SChristopher Smith array('cdata',array(' C4 ')), 597688ce8d8SChristopher Smith array('tablecell_close',array()), 598688ce8d8SChristopher Smith array('tablerow_close',array()), 599688ce8d8SChristopher Smith array('table_close',array(76)), 600688ce8d8SChristopher Smith array('p_open',array()), 601688ce8d8SChristopher Smith array('cdata',array('def')), 602688ce8d8SChristopher Smith array('p_close',array()), 603688ce8d8SChristopher Smith array('document_end',array()), 604688ce8d8SChristopher Smith ); 605688ce8d8SChristopher Smith 606688ce8d8SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 607688ce8d8SChristopher Smith 608688ce8d8SChristopher Smith } 609688ce8d8SChristopher Smith 610f8369d7dSTobias Sarnowski function testCellAlignmentFormatting() { 61136dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 61236dc94bbSAndreas Gohr $this->P->addMode('strong',new Formatting('strong')); 613f8369d7dSTobias Sarnowski $this->P->parse(' 614f8369d7dSTobias Sarnowskiabc 615f8369d7dSTobias Sarnowski| **X** | Y ^ Z | 616f8369d7dSTobias Sarnowskidef'); 617f8369d7dSTobias Sarnowski 618f8369d7dSTobias Sarnowski $calls = array ( 619f8369d7dSTobias Sarnowski array('document_start',array()), 620f8369d7dSTobias Sarnowski array('p_open',array()), 621f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 622f8369d7dSTobias Sarnowski array('p_close',array()), 623f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 624f8369d7dSTobias Sarnowski array('tablerow_open',array()), 625f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'right',1)), 626f8369d7dSTobias Sarnowski array('cdata',array(' ')), 627f8369d7dSTobias Sarnowski array('strong_open',array()), 628f8369d7dSTobias Sarnowski array('cdata',array('X')), 629f8369d7dSTobias Sarnowski array('strong_close',array()), 630f8369d7dSTobias Sarnowski array('cdata',array(' ')), 631f8369d7dSTobias Sarnowski array('tablecell_close',array()), 632f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 633f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 634f8369d7dSTobias Sarnowski array('tablecell_close',array()), 635f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'center',1)), 636f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 637f8369d7dSTobias Sarnowski array('tableheader_close',array()), 638f8369d7dSTobias Sarnowski array('tablerow_close',array()), 639f8369d7dSTobias Sarnowski array('table_close',array(27)), 640f8369d7dSTobias Sarnowski array('p_open',array()), 641f8369d7dSTobias Sarnowski array('cdata',array('def')), 642f8369d7dSTobias Sarnowski array('p_close',array()), 643f8369d7dSTobias Sarnowski array('document_end',array()), 644f8369d7dSTobias Sarnowski ); 645f8369d7dSTobias Sarnowski 646e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 647f8369d7dSTobias Sarnowski 648f8369d7dSTobias Sarnowski } 649f8369d7dSTobias Sarnowski 650f8369d7dSTobias Sarnowski function testTableEol() { 65136dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 65236dc94bbSAndreas Gohr $this->P->addMode('eol',new Eol()); 653f8369d7dSTobias Sarnowski $this->P->parse(' 654f8369d7dSTobias Sarnowskiabc 655f8369d7dSTobias Sarnowski| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 656f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 657f8369d7dSTobias Sarnowskidef'); 658f8369d7dSTobias Sarnowski $calls = array ( 659f8369d7dSTobias Sarnowski array('document_start',array()), 660f8369d7dSTobias Sarnowski array('p_open',array()), 661f8369d7dSTobias Sarnowski array('cdata',array("abc")), 662f8369d7dSTobias Sarnowski array('p_close',array()), 663f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 664f8369d7dSTobias Sarnowski array('tablerow_open',array()), 665f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 666f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 667f8369d7dSTobias Sarnowski array('tablecell_close',array()), 668f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 669f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 670f8369d7dSTobias Sarnowski array('tablecell_close',array()), 671f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 672f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 673f8369d7dSTobias Sarnowski array('tablecell_close',array()), 674f8369d7dSTobias Sarnowski array('tablerow_close',array()), 675f8369d7dSTobias Sarnowski array('tablerow_open',array()), 676f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 677f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 678f8369d7dSTobias Sarnowski array('tablecell_close',array()), 679f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 680f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 681f8369d7dSTobias Sarnowski array('tablecell_close',array()), 682f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 683f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 684f8369d7dSTobias Sarnowski array('tablecell_close',array()), 685f8369d7dSTobias Sarnowski array('tablerow_close',array()), 686f8369d7dSTobias Sarnowski array('table_close',array(121)), 687f8369d7dSTobias Sarnowski array('p_open',array()), 688f8369d7dSTobias Sarnowski array('cdata',array('def')), 689f8369d7dSTobias Sarnowski array('p_close',array()), 690f8369d7dSTobias Sarnowski array('document_end',array()), 691f8369d7dSTobias Sarnowski ); 692e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 693f8369d7dSTobias Sarnowski } 694f8369d7dSTobias Sarnowski 695f8369d7dSTobias Sarnowski // This is really a failing test - formatting able to spread across cols 696f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 697f8369d7dSTobias Sarnowski function testTableStrong() { 69836dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 69936dc94bbSAndreas Gohr $this->P->addMode('strong',new Formatting('strong')); 700f8369d7dSTobias Sarnowski $this->P->parse(' 701f8369d7dSTobias Sarnowskiabc 702f8369d7dSTobias Sarnowski| **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** | 703f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 704f8369d7dSTobias Sarnowskidef'); 705f8369d7dSTobias Sarnowski $calls = array ( 706f8369d7dSTobias Sarnowski array('document_start',array()), 707f8369d7dSTobias Sarnowski array('p_open',array()), 708f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 709f8369d7dSTobias Sarnowski array('p_close',array()), 710f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 711f8369d7dSTobias Sarnowski array('tablerow_open',array()), 712f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 713f8369d7dSTobias Sarnowski array('cdata',array(' ')), 714f8369d7dSTobias Sarnowski array('strong_open',array()), 715f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 1')), 716f8369d7dSTobias Sarnowski array('strong_close',array()), 717f8369d7dSTobias Sarnowski array('cdata',array(' ')), 718f8369d7dSTobias Sarnowski array('tablecell_close',array()), 719f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 720f8369d7dSTobias Sarnowski array('cdata',array(' ')), 721f8369d7dSTobias Sarnowski array('strong_open',array()), 722f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 723f8369d7dSTobias Sarnowski array('strong_close',array()), 724f8369d7dSTobias Sarnowski array('cdata',array(' ')), 725f8369d7dSTobias Sarnowski array('tablecell_close',array()), 726f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 727f8369d7dSTobias Sarnowski array('cdata',array('')), 728f8369d7dSTobias Sarnowski array('tablecell_close',array()), 729f8369d7dSTobias Sarnowski array('tablerow_close',array()), 730f8369d7dSTobias Sarnowski array('tablerow_open',array()), 731f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 732f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 733f8369d7dSTobias Sarnowski array('tablecell_close',array()), 734f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 735f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 736f8369d7dSTobias Sarnowski array('tablecell_close',array()), 737f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 738f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 739f8369d7dSTobias Sarnowski array('tablecell_close',array()), 740f8369d7dSTobias Sarnowski array('tablerow_close',array()), 741f8369d7dSTobias Sarnowski array('table_close',array(129)), 742f8369d7dSTobias Sarnowski array('p_open',array()), 743f8369d7dSTobias Sarnowski array('cdata',array('def')), 744f8369d7dSTobias Sarnowski array('p_close',array()), 745f8369d7dSTobias Sarnowski array('document_end',array()), 746f8369d7dSTobias Sarnowski ); 747e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 748f8369d7dSTobias Sarnowski } 749f8369d7dSTobias Sarnowski 750f8369d7dSTobias Sarnowski // This is really a failing test - unformatted able to spread across cols 751f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 752f8369d7dSTobias Sarnowski function testTableUnformatted() { 75336dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 75436dc94bbSAndreas Gohr $this->P->addMode('unformatted',new Unformatted()); 755f8369d7dSTobias Sarnowski $this->P->parse(' 756f8369d7dSTobias Sarnowskiabc 757f8369d7dSTobias Sarnowski| <nowiki>Row 0 Col 1</nowiki> | <nowiki>Row 0 Col 2 | Row 0 Col 3</nowiki> | 758f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 759f8369d7dSTobias Sarnowskidef'); 760f8369d7dSTobias Sarnowski $calls = array ( 761f8369d7dSTobias Sarnowski array('document_start',array()), 762f8369d7dSTobias Sarnowski array('p_open',array()), 763f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 764f8369d7dSTobias Sarnowski array('p_close',array()), 765f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 766f8369d7dSTobias Sarnowski array('tablerow_open',array()), 767f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 768f8369d7dSTobias Sarnowski array('cdata',array(' ')), 769f8369d7dSTobias Sarnowski array('unformatted',array('Row 0 Col 1')), 770f8369d7dSTobias Sarnowski array('cdata',array(' ')), 771f8369d7dSTobias Sarnowski array('tablecell_close',array()), 772f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 773f8369d7dSTobias Sarnowski array('cdata',array(' ')), 774f8369d7dSTobias Sarnowski array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')), 775f8369d7dSTobias Sarnowski array('cdata',array(' ')), 776f8369d7dSTobias Sarnowski array('tablecell_close',array()), 777f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 778f8369d7dSTobias Sarnowski array('cdata',array('')), 779f8369d7dSTobias Sarnowski array('tablecell_close',array()), 780f8369d7dSTobias Sarnowski array('tablerow_close',array()), 781f8369d7dSTobias Sarnowski array('tablerow_open',array()), 782f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 783f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 784f8369d7dSTobias Sarnowski array('tablecell_close',array()), 785f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 786f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 787f8369d7dSTobias Sarnowski array('tablecell_close',array()), 788f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 789f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 790f8369d7dSTobias Sarnowski array('tablecell_close',array()), 791f8369d7dSTobias Sarnowski array('tablerow_close',array()), 792f8369d7dSTobias Sarnowski array('table_close',array(155)), 793f8369d7dSTobias Sarnowski array('p_open',array()), 794f8369d7dSTobias Sarnowski array('cdata',array('def')), 795f8369d7dSTobias Sarnowski array('p_close',array()), 796f8369d7dSTobias Sarnowski array('document_end',array()), 797f8369d7dSTobias Sarnowski ); 798e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 799f8369d7dSTobias Sarnowski } 800f8369d7dSTobias Sarnowski 801f8369d7dSTobias Sarnowski function testTableLinebreak() { 80236dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 80336dc94bbSAndreas Gohr $this->P->addMode('linebreak',new Linebreak()); 804f8369d7dSTobias Sarnowski $this->P->parse(' 805f8369d7dSTobias Sarnowskiabc 806f8369d7dSTobias Sarnowski| Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 | 807f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 808f8369d7dSTobias Sarnowskidef'); 809f8369d7dSTobias Sarnowski $calls = array ( 810f8369d7dSTobias Sarnowski array('document_start',array()), 811f8369d7dSTobias Sarnowski array('p_open',array()), 812f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 813f8369d7dSTobias Sarnowski array('p_close',array()), 814f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 815f8369d7dSTobias Sarnowski array('tablerow_open',array()), 816f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 817f8369d7dSTobias Sarnowski array('cdata',array(' Row 0')), 818f8369d7dSTobias Sarnowski array('linebreak',array()), 819f8369d7dSTobias Sarnowski array('cdata',array('Col 1 ')), 820f8369d7dSTobias Sarnowski array('tablecell_close',array()), 821f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 822f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 823f8369d7dSTobias Sarnowski array('tablecell_close',array()), 824f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 825f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 826f8369d7dSTobias Sarnowski array('tablecell_close',array()), 827f8369d7dSTobias Sarnowski array('tablerow_close',array()), 828f8369d7dSTobias Sarnowski array('tablerow_open',array()), 829f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 830f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 831f8369d7dSTobias Sarnowski array('tablecell_close',array()), 832f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 833f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 834f8369d7dSTobias Sarnowski array('tablecell_close',array()), 835f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 836f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 837f8369d7dSTobias Sarnowski array('tablecell_close',array()), 838f8369d7dSTobias Sarnowski array('tablerow_close',array()), 839f8369d7dSTobias Sarnowski array('table_close',array(123)), 840f8369d7dSTobias Sarnowski array('p_open',array()), 841f8369d7dSTobias Sarnowski array('cdata',array('def')), 842f8369d7dSTobias Sarnowski array('p_close',array()), 843f8369d7dSTobias Sarnowski array('document_end',array()), 844f8369d7dSTobias Sarnowski ); 845f8369d7dSTobias Sarnowski 846e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 847f8369d7dSTobias Sarnowski } 848f8369d7dSTobias Sarnowski 849f8369d7dSTobias Sarnowski // This is really a failing test - footnote able to spread across cols 850f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 851f8369d7dSTobias Sarnowski function testTableFootnote() { 85236dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 85336dc94bbSAndreas Gohr $this->P->addMode('footnote',new Footnote()); 854f8369d7dSTobias Sarnowski $this->P->parse(' 855f8369d7dSTobias Sarnowskiabc 856f8369d7dSTobias Sarnowski| ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) | 857f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 858f8369d7dSTobias Sarnowskidef'); 859f8369d7dSTobias Sarnowski $calls = array ( 860f8369d7dSTobias Sarnowski array('document_start',array()), 861f8369d7dSTobias Sarnowski array('p_open',array()), 862f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 863f8369d7dSTobias Sarnowski array('p_close',array()), 864f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 865f8369d7dSTobias Sarnowski array('tablerow_open',array()), 866f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 867f8369d7dSTobias Sarnowski array('cdata',array(' ')), 868f8369d7dSTobias Sarnowski array('nest', array ( array ( 869f8369d7dSTobias Sarnowski array('footnote_open',array()), 870f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 1')), 871f8369d7dSTobias Sarnowski array('footnote_close',array()), 872f8369d7dSTobias Sarnowski ))), 873f8369d7dSTobias Sarnowski array('cdata',array(' ')), 874f8369d7dSTobias Sarnowski array('tablecell_close',array()), 875f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 876f8369d7dSTobias Sarnowski array('cdata',array(' ')), 877f8369d7dSTobias Sarnowski array('nest', array ( array ( 878f8369d7dSTobias Sarnowski array('footnote_open',array()), 879f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 880f8369d7dSTobias Sarnowski array('footnote_close',array()), 881f8369d7dSTobias Sarnowski ))), 882f8369d7dSTobias Sarnowski array('cdata',array(' ')), 883f8369d7dSTobias Sarnowski array('tablecell_close',array()), 884f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 885f8369d7dSTobias Sarnowski array('cdata',array('')), 886f8369d7dSTobias Sarnowski array('tablecell_close',array()), 887f8369d7dSTobias Sarnowski array('tablerow_close',array()), 888f8369d7dSTobias Sarnowski array('tablerow_open',array()), 889f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 890f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 891f8369d7dSTobias Sarnowski array('tablecell_close',array()), 892f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 893f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 894f8369d7dSTobias Sarnowski array('tablecell_close',array()), 895f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 896f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 897f8369d7dSTobias Sarnowski array('tablecell_close',array()), 898f8369d7dSTobias Sarnowski array('tablerow_close',array()), 899f8369d7dSTobias Sarnowski array('table_close',array(129)), 900f8369d7dSTobias Sarnowski array('p_open',array()), 901f8369d7dSTobias Sarnowski array('cdata',array('def')), 902f8369d7dSTobias Sarnowski array('p_close',array()), 903f8369d7dSTobias Sarnowski array('document_end',array()), 904f8369d7dSTobias Sarnowski ); 905e0328e30SChristopher Smith $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 906f8369d7dSTobias Sarnowski } 9075a41afe6SChristopher Smith 9085a41afe6SChristopher Smith function testTable_FS1833() { 9095a41afe6SChristopher Smith $syntax = " \n| Row 0 Col 1 |\n"; 91036dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 9115a41afe6SChristopher Smith $this->P->parse($syntax); 9125a41afe6SChristopher Smith $calls = array ( 9135a41afe6SChristopher Smith array('document_start',array()), 9145a41afe6SChristopher Smith array('table_open',array(1, 1, 2)), 9155a41afe6SChristopher Smith array('tablerow_open',array()), 9165a41afe6SChristopher Smith array('tablecell_open',array(1,'left',1)), 9175a41afe6SChristopher Smith array('cdata',array(' Row 0 Col 1 ')), 9185a41afe6SChristopher Smith array('tablecell_close',array()), 9195a41afe6SChristopher Smith array('tablerow_close',array()), 9205a41afe6SChristopher Smith array('table_close',array(strlen($syntax))), 9215a41afe6SChristopher Smith array('document_end',array()), 9225a41afe6SChristopher Smith ); 9235a41afe6SChristopher Smith $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 9245a41afe6SChristopher Smith } 9255a41afe6SChristopher Smith 926dbd52c81SAndreas Gohr /** 927dbd52c81SAndreas Gohr * missing cells in one row get filled up... 928dbd52c81SAndreas Gohr */ 929dbd52c81SAndreas Gohr function testTable_CellFix() { 930dbd52c81SAndreas Gohr $syntax = "\n| r1c1 | r1c2 | r1c3 |\n| r2c1 |\n"; 93136dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 932dbd52c81SAndreas Gohr $this->P->parse($syntax); 933dbd52c81SAndreas Gohr $calls = array ( 934dbd52c81SAndreas Gohr array('document_start',array()), 935dbd52c81SAndreas Gohr array('table_open',array(3, 2, 2)), 936dbd52c81SAndreas Gohr 937dbd52c81SAndreas Gohr array('tablerow_open',array()), 938dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 939dbd52c81SAndreas Gohr array('cdata',array(' r1c1 ')), 940dbd52c81SAndreas Gohr array('tablecell_close',array()), 941dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 942dbd52c81SAndreas Gohr array('cdata',array(' r1c2 ')), 943dbd52c81SAndreas Gohr array('tablecell_close',array()), 944dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 945dbd52c81SAndreas Gohr array('cdata',array(' r1c3 ')), 946dbd52c81SAndreas Gohr array('tablecell_close',array()), 947dbd52c81SAndreas Gohr array('tablerow_close',array()), 948dbd52c81SAndreas Gohr 949dbd52c81SAndreas Gohr array('tablerow_open',array()), 950dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 951dbd52c81SAndreas Gohr array('cdata',array(' r2c1 ')), 952dbd52c81SAndreas Gohr array('tablecell_close',array()), 953dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 954dbd52c81SAndreas Gohr array('cdata',array('')), 955dbd52c81SAndreas Gohr array('tablecell_close',array()), 956dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 957dbd52c81SAndreas Gohr array('cdata',array('')), 958dbd52c81SAndreas Gohr array('tablecell_close',array()), 959dbd52c81SAndreas Gohr array('tablerow_close',array()), 960dbd52c81SAndreas Gohr 961dbd52c81SAndreas Gohr array('table_close',array(strlen($syntax))), 962dbd52c81SAndreas Gohr array('document_end',array()), 963dbd52c81SAndreas Gohr ); 964dbd52c81SAndreas Gohr $this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls)); 965dbd52c81SAndreas Gohr } 966dbd52c81SAndreas Gohr 967dbd52c81SAndreas Gohr /** 968dbd52c81SAndreas Gohr * ... even if the longer row comes later 969dbd52c81SAndreas Gohr */ 970dbd52c81SAndreas Gohr function testTable_CellFix2() { 971dbd52c81SAndreas Gohr $syntax = "\n| r1c1 |\n| r2c1 | r2c2 | r2c3 |\n"; 97236dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 973dbd52c81SAndreas Gohr $this->P->parse($syntax); 974dbd52c81SAndreas Gohr $calls = array ( 975dbd52c81SAndreas Gohr array('document_start',array()), 976dbd52c81SAndreas Gohr array('table_open',array(3, 2, 2)), 977dbd52c81SAndreas Gohr 978dbd52c81SAndreas Gohr array('tablerow_open',array()), 979dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 980dbd52c81SAndreas Gohr array('cdata',array(' r1c1 ')), 981dbd52c81SAndreas Gohr array('tablecell_close',array()), 982dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 983dbd52c81SAndreas Gohr array('cdata',array('')), 984dbd52c81SAndreas Gohr array('tablecell_close',array()), 985dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 986dbd52c81SAndreas Gohr array('cdata',array('')), 987dbd52c81SAndreas Gohr array('tablecell_close',array()), 988dbd52c81SAndreas Gohr array('tablerow_close',array()), 989dbd52c81SAndreas Gohr 990dbd52c81SAndreas Gohr array('tablerow_open',array()), 991dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 992dbd52c81SAndreas Gohr array('cdata',array(' r2c1 ')), 993dbd52c81SAndreas Gohr array('tablecell_close',array()), 994dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 995dbd52c81SAndreas Gohr array('cdata',array(' r2c2 ')), 996dbd52c81SAndreas Gohr array('tablecell_close',array()), 997dbd52c81SAndreas Gohr array('tablecell_open',array(1,null,1)), 998dbd52c81SAndreas Gohr array('cdata',array(' r2c3 ')), 999dbd52c81SAndreas Gohr array('tablecell_close',array()), 1000dbd52c81SAndreas Gohr array('tablerow_close',array()), 1001dbd52c81SAndreas Gohr 1002dbd52c81SAndreas Gohr array('table_close',array(strlen($syntax))), 1003dbd52c81SAndreas Gohr array('document_end',array()), 1004dbd52c81SAndreas Gohr ); 1005dbd52c81SAndreas Gohr $this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls)); 1006dbd52c81SAndreas Gohr } 1007f8369d7dSTobias Sarnowski} 1008