1f8369d7dSTobias Sarnowski<?php 2f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 3f8369d7dSTobias Sarnowski 4f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Table extends TestOfDoku_Parser { 5f8369d7dSTobias Sarnowski 6f8369d7dSTobias Sarnowski function testTable() { 7f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 8f8369d7dSTobias Sarnowski $this->P->parse(' 9f8369d7dSTobias Sarnowskiabc 10f8369d7dSTobias Sarnowski| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 11f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 12f8369d7dSTobias Sarnowskidef'); 13f8369d7dSTobias Sarnowski $calls = array ( 14f8369d7dSTobias Sarnowski array('document_start',array()), 15f8369d7dSTobias Sarnowski array('p_open',array()), 16f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 17f8369d7dSTobias Sarnowski array('p_close',array()), 18f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 19f8369d7dSTobias Sarnowski array('tablerow_open',array()), 20f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 21f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 22f8369d7dSTobias Sarnowski array('tablecell_close',array()), 23f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 24f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 25f8369d7dSTobias Sarnowski array('tablecell_close',array()), 26f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 27f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 28f8369d7dSTobias Sarnowski array('tablecell_close',array()), 29f8369d7dSTobias Sarnowski array('tablerow_close',array()), 30f8369d7dSTobias Sarnowski array('tablerow_open',array()), 31f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 32f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 33f8369d7dSTobias Sarnowski array('tablecell_close',array()), 34f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 35f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 36f8369d7dSTobias Sarnowski array('tablecell_close',array()), 37f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 38f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 39f8369d7dSTobias Sarnowski array('tablecell_close',array()), 40f8369d7dSTobias Sarnowski array('tablerow_close',array()), 41f8369d7dSTobias Sarnowski array('table_close',array(121)), 42f8369d7dSTobias Sarnowski array('p_open',array()), 43f8369d7dSTobias Sarnowski array('cdata',array('def')), 44f8369d7dSTobias Sarnowski array('p_close',array()), 45f8369d7dSTobias Sarnowski array('document_end',array()), 46f8369d7dSTobias Sarnowski ); 47f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 48f8369d7dSTobias Sarnowski } 49f8369d7dSTobias Sarnowski 50f8369d7dSTobias Sarnowski function testTableWinEOL() { 51f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 52f8369d7dSTobias 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"); 53f8369d7dSTobias Sarnowski $calls = array ( 54f8369d7dSTobias Sarnowski array('document_start',array()), 55f8369d7dSTobias Sarnowski array('p_open',array()), 56f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 57f8369d7dSTobias Sarnowski array('p_close',array()), 58f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 59f8369d7dSTobias Sarnowski array('tablerow_open',array()), 60f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 61f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 62f8369d7dSTobias Sarnowski array('tablecell_close',array()), 63f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 64f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 65f8369d7dSTobias Sarnowski array('tablecell_close',array()), 66f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 67f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 68f8369d7dSTobias Sarnowski array('tablecell_close',array()), 69f8369d7dSTobias Sarnowski array('tablerow_close',array()), 70f8369d7dSTobias Sarnowski array('tablerow_open',array()), 71f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 72f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 73f8369d7dSTobias Sarnowski array('tablecell_close',array()), 74f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 75f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 76f8369d7dSTobias Sarnowski array('tablecell_close',array()), 77f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 78f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 79f8369d7dSTobias Sarnowski array('tablecell_close',array()), 80f8369d7dSTobias Sarnowski array('tablerow_close',array()), 81f8369d7dSTobias Sarnowski array('table_close',array(121)), 82f8369d7dSTobias Sarnowski array('p_open',array()), 83f8369d7dSTobias Sarnowski array('cdata',array('def')), 84f8369d7dSTobias Sarnowski array('p_close',array()), 85f8369d7dSTobias Sarnowski array('document_end',array()), 86f8369d7dSTobias Sarnowski ); 87f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 88f8369d7dSTobias Sarnowski } 89f8369d7dSTobias Sarnowski 90f8369d7dSTobias Sarnowski function testEmptyTable() { 91f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 92f8369d7dSTobias Sarnowski $this->P->parse(' 93f8369d7dSTobias Sarnowskiabc 94f8369d7dSTobias Sarnowski| 95f8369d7dSTobias Sarnowskidef'); 96f8369d7dSTobias Sarnowski 97f8369d7dSTobias Sarnowski $calls = array ( 98f8369d7dSTobias Sarnowski array('document_start',array()), 99f8369d7dSTobias Sarnowski array('p_open',array()), 100f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 101f8369d7dSTobias Sarnowski array('p_close',array()), 102f8369d7dSTobias Sarnowski array('table_open',array(0, 1, 6)), 103f8369d7dSTobias Sarnowski array('tablerow_open',array()), 104f8369d7dSTobias Sarnowski array('tablerow_close',array()), 105f8369d7dSTobias Sarnowski array('table_close',array(7)), 106f8369d7dSTobias Sarnowski array('p_open',array()), 107f8369d7dSTobias Sarnowski array('cdata',array('def')), 108f8369d7dSTobias Sarnowski array('p_close',array()), 109f8369d7dSTobias Sarnowski array('document_end',array()), 110f8369d7dSTobias Sarnowski ); 111f8369d7dSTobias Sarnowski 112f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 113f8369d7dSTobias Sarnowski } 114f8369d7dSTobias Sarnowski 115f8369d7dSTobias Sarnowski function testTableHeaders() { 116f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 117f8369d7dSTobias Sarnowski $this->P->parse(' 118f8369d7dSTobias Sarnowskiabc 119f8369d7dSTobias Sarnowski^ X | Y ^ Z | 120f8369d7dSTobias Sarnowskidef'); 121f8369d7dSTobias Sarnowski 122f8369d7dSTobias Sarnowski $calls = array ( 123f8369d7dSTobias Sarnowski array('document_start',array()), 124f8369d7dSTobias Sarnowski array('p_open',array()), 125f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 126f8369d7dSTobias Sarnowski array('p_close',array()), 127f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 128f8369d7dSTobias Sarnowski array('tablerow_open',array()), 129f8369d7dSTobias Sarnowski array('tableheader_open',array(1,NULL,1)), 130f8369d7dSTobias Sarnowski array('cdata',array(' X ')), 131f8369d7dSTobias Sarnowski array('tableheader_close',array()), 132f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 133f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 134f8369d7dSTobias Sarnowski array('tablecell_close',array()), 135f8369d7dSTobias Sarnowski array('tableheader_open',array(1,NULL,1)), 136f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 137f8369d7dSTobias Sarnowski array('tableheader_close',array()), 138f8369d7dSTobias Sarnowski array('tablerow_close',array()), 139f8369d7dSTobias Sarnowski array('table_close',array(19)), 140f8369d7dSTobias Sarnowski array('p_open',array()), 141f8369d7dSTobias Sarnowski array('cdata',array('def')), 142f8369d7dSTobias Sarnowski array('p_close',array()), 143f8369d7dSTobias Sarnowski array('document_end',array()), 144f8369d7dSTobias Sarnowski ); 145f8369d7dSTobias Sarnowski 146f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 147f8369d7dSTobias Sarnowski 148f8369d7dSTobias Sarnowski } 149f8369d7dSTobias Sarnowski 150f8369d7dSTobias Sarnowski function testCellAlignment() { 151f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 152f8369d7dSTobias Sarnowski $this->P->parse(' 153f8369d7dSTobias Sarnowskiabc 154f8369d7dSTobias Sarnowski| X | Y ^ Z | 155f8369d7dSTobias Sarnowskidef'); 156f8369d7dSTobias Sarnowski 157f8369d7dSTobias Sarnowski $calls = array ( 158f8369d7dSTobias Sarnowski array('document_start',array()), 159f8369d7dSTobias Sarnowski array('p_open',array()), 160f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 161f8369d7dSTobias Sarnowski array('p_close',array()), 162f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 163f8369d7dSTobias Sarnowski array('tablerow_open',array()), 164f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'right',1)), 165f8369d7dSTobias Sarnowski array('cdata',array(' X ')), 166f8369d7dSTobias Sarnowski array('tablecell_close',array()), 167f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 168f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 169f8369d7dSTobias Sarnowski array('tablecell_close',array()), 170f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'center',1)), 171f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 172f8369d7dSTobias Sarnowski array('tableheader_close',array()), 173f8369d7dSTobias Sarnowski array('tablerow_close',array()), 174f8369d7dSTobias Sarnowski array('table_close',array(23)), 175f8369d7dSTobias Sarnowski array('p_open',array()), 176f8369d7dSTobias Sarnowski array('cdata',array('def')), 177f8369d7dSTobias Sarnowski array('p_close',array()), 178f8369d7dSTobias Sarnowski array('document_end',array()), 179f8369d7dSTobias Sarnowski ); 180f8369d7dSTobias Sarnowski 181f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 182f8369d7dSTobias Sarnowski } 183f8369d7dSTobias Sarnowski 184f8369d7dSTobias Sarnowski function testCellSpan() { 185f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 186f8369d7dSTobias Sarnowski $this->P->parse(' 187f8369d7dSTobias Sarnowskiabc 188f8369d7dSTobias Sarnowski| d || e | 189f8369d7dSTobias Sarnowski| f ^ ^| 190f8369d7dSTobias Sarnowski|||| 191f8369d7dSTobias Sarnowskidef'); 192f8369d7dSTobias Sarnowski 193f8369d7dSTobias Sarnowski $calls = array ( 194f8369d7dSTobias Sarnowski array('document_start',array()), 195f8369d7dSTobias Sarnowski array('p_open',array()), 196f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 197f8369d7dSTobias Sarnowski array('p_close',array()), 198f8369d7dSTobias Sarnowski array('table_open',array(3, 3, 6)), 199f8369d7dSTobias Sarnowski array('tablerow_open',array()), 200f8369d7dSTobias Sarnowski array('tablecell_open',array(2,'right',1)), 201f8369d7dSTobias Sarnowski array('cdata',array(' d ')), 202f8369d7dSTobias Sarnowski array('tablecell_close',array()), 203f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 204f8369d7dSTobias Sarnowski array('cdata',array(' e ')), 205f8369d7dSTobias Sarnowski array('tablecell_close',array()), 206f8369d7dSTobias Sarnowski array('tablerow_close',array()), 207f8369d7dSTobias Sarnowski array('tablerow_open',array()), 208f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 209f8369d7dSTobias Sarnowski array('cdata',array(' f ')), 210f8369d7dSTobias Sarnowski array('tablecell_close',array()), 211f8369d7dSTobias Sarnowski array('tableheader_open',array(2,NULL,1)), 212f8369d7dSTobias Sarnowski array('cdata',array(' ')), 213f8369d7dSTobias Sarnowski array('tableheader_close',array()), 214f8369d7dSTobias Sarnowski array('tablerow_close',array()), 215f8369d7dSTobias Sarnowski array('tablerow_open',array()), 216f8369d7dSTobias Sarnowski array('tablerow_close',array()), 217f8369d7dSTobias Sarnowski array('table_close',array(31)), 218f8369d7dSTobias Sarnowski array('p_open',array()), 219f8369d7dSTobias Sarnowski array('cdata',array('def')), 220f8369d7dSTobias Sarnowski array('p_close',array()), 221f8369d7dSTobias Sarnowski array('document_end',array()), 222f8369d7dSTobias Sarnowski ); 223f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 224f8369d7dSTobias Sarnowski } 225f8369d7dSTobias Sarnowski 226f8369d7dSTobias Sarnowski function testCellRowSpan() { 227f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 228f8369d7dSTobias Sarnowski $this->P->parse(' 229f8369d7dSTobias Sarnowskiabc 230f8369d7dSTobias Sarnowski| a | c:::|| 231f8369d7dSTobias Sarnowski|:::^ d | e| 232f8369d7dSTobias Sarnowski|b ^ ::: |:::f| 233f8369d7dSTobias Sarnowskidef'); 234f8369d7dSTobias Sarnowski 235f8369d7dSTobias Sarnowski $calls = array ( 236f8369d7dSTobias Sarnowski array('document_start',array()), 237f8369d7dSTobias Sarnowski array('p_open',array()), 238f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 239f8369d7dSTobias Sarnowski array('p_close',array()), 240f8369d7dSTobias Sarnowski array('table_open',array(3, 3, 6)), 241f8369d7dSTobias Sarnowski array('tablerow_open',array()), 242f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,2)), 243f8369d7dSTobias Sarnowski array('cdata',array(' a ')), 244f8369d7dSTobias Sarnowski array('tablecell_close',array()), 245f8369d7dSTobias Sarnowski array('tablecell_open',array(2,'right',1)), 246f8369d7dSTobias Sarnowski array('cdata',array(' c:::')), 247f8369d7dSTobias Sarnowski array('tablecell_close',array()), 248f8369d7dSTobias Sarnowski array('tablerow_close',array()), 249f8369d7dSTobias Sarnowski array('tablerow_open',array()), 250f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'left',2)), 251f8369d7dSTobias Sarnowski array('cdata',array(' d ')), 252f8369d7dSTobias Sarnowski array('tableheader_close',array()), 253f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 254f8369d7dSTobias Sarnowski array('cdata',array(' e')), 255f8369d7dSTobias Sarnowski array('tablecell_close',array()), 256f8369d7dSTobias Sarnowski array('tablerow_close',array()), 257f8369d7dSTobias Sarnowski array('tablerow_open',array()), 258f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 259f8369d7dSTobias Sarnowski array('cdata',array('b ')), 260f8369d7dSTobias Sarnowski array('tablecell_close',array()), 261f8369d7dSTobias Sarnowski array('tablecell_open',array(1,NULL,1)), 262f8369d7dSTobias Sarnowski array('cdata',array(':::f')), 263f8369d7dSTobias Sarnowski array('tablecell_close',array()), 264f8369d7dSTobias Sarnowski array('tablerow_close',array()), 265f8369d7dSTobias Sarnowski array('table_close',array(51)), 266f8369d7dSTobias Sarnowski array('p_open',array()), 267f8369d7dSTobias Sarnowski array('cdata',array('def')), 268f8369d7dSTobias Sarnowski array('p_close',array()), 269f8369d7dSTobias Sarnowski array('document_end',array()), 270f8369d7dSTobias Sarnowski ); 271f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 272f8369d7dSTobias Sarnowski } 2730d9a72ffSGerrit Uitslag 2740d9a72ffSGerrit Uitslag function testCellRowSpanFirstRow() { 2750d9a72ffSGerrit Uitslag $this->P->addMode('table',new Doku_Parser_Mode_Table()); 2760d9a72ffSGerrit Uitslag $this->P->parse(' 2770d9a72ffSGerrit Uitslagabc 2780d9a72ffSGerrit Uitslag|::: ^ d:::^:::| ::: | 2790d9a72ffSGerrit Uitslag| b ^ e | | ::: | 2800d9a72ffSGerrit Uitslag|c ^ ::: | |:::| 2810d9a72ffSGerrit Uitslagdef'); 2820d9a72ffSGerrit Uitslag 2830d9a72ffSGerrit Uitslag $calls = array ( 2840d9a72ffSGerrit Uitslag array('document_start',array()), 2850d9a72ffSGerrit Uitslag array('p_open',array()), 2860d9a72ffSGerrit Uitslag array('cdata',array("\n\nabc")), 2870d9a72ffSGerrit Uitslag array('p_close',array()), 2880d9a72ffSGerrit Uitslag array('table_open',array(4, 3, 6)), 2890d9a72ffSGerrit Uitslag array('tablerow_open',array()), 2900d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 2910d9a72ffSGerrit Uitslag array('cdata',array('')), 2920d9a72ffSGerrit Uitslag array('tablecell_close',array()), 2930d9a72ffSGerrit Uitslag array('tableheader_open',array(1,'right',1)), 2940d9a72ffSGerrit Uitslag array('cdata',array(' d:::')), 2950d9a72ffSGerrit Uitslag array('tableheader_close',array()), 2960d9a72ffSGerrit Uitslag array('tableheader_open',array(1,NULL,1)), 2970d9a72ffSGerrit Uitslag array('cdata',array('')), 2980d9a72ffSGerrit Uitslag array('tableheader_close',array()), 2990d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,3)), 3000d9a72ffSGerrit Uitslag array('cdata',array('')), 3010d9a72ffSGerrit Uitslag array('tablecell_close',array()), 3020d9a72ffSGerrit Uitslag array('tablerow_close',array()), 3030d9a72ffSGerrit Uitslag array('tablerow_open',array()), 3040d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 3050d9a72ffSGerrit Uitslag array('cdata',array(' b ')), 3060d9a72ffSGerrit Uitslag array('tablecell_close',array()), 3070d9a72ffSGerrit Uitslag array('tableheader_open',array(1,'left',2)), 3080d9a72ffSGerrit Uitslag array('cdata',array(' e ')), 3090d9a72ffSGerrit Uitslag array('tableheader_close',array()), 3100d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 3110d9a72ffSGerrit Uitslag array('cdata',array(' ')), 3120d9a72ffSGerrit Uitslag array('tablecell_close',array()), 3130d9a72ffSGerrit Uitslag array('tablerow_close',array()), 3140d9a72ffSGerrit Uitslag array('tablerow_open',array()), 3150d9a72ffSGerrit Uitslag array('tablecell_open',array(1,'left',1)), 3160d9a72ffSGerrit Uitslag array('cdata',array('c ')), 3170d9a72ffSGerrit Uitslag array('tablecell_close',array()), 3180d9a72ffSGerrit Uitslag array('tablecell_open',array(1,NULL,1)), 3190d9a72ffSGerrit Uitslag array('cdata',array(' ')), 3200d9a72ffSGerrit Uitslag array('tablecell_close',array()), 3210d9a72ffSGerrit Uitslag array('tablerow_close',array()), 3220d9a72ffSGerrit Uitslag 3230d9a72ffSGerrit Uitslag array('table_close',array(69)), 3240d9a72ffSGerrit Uitslag array('p_open',array()), 3250d9a72ffSGerrit Uitslag array('cdata',array('def')), 3260d9a72ffSGerrit Uitslag array('p_close',array()), 3270d9a72ffSGerrit Uitslag array('document_end',array()), 3280d9a72ffSGerrit Uitslag ); 3290d9a72ffSGerrit Uitslag $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 3300d9a72ffSGerrit Uitslag } 331f8369d7dSTobias Sarnowski 332f8369d7dSTobias Sarnowski function testCellAlignmentFormatting() { 333f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 334f8369d7dSTobias Sarnowski $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); 335f8369d7dSTobias Sarnowski $this->P->parse(' 336f8369d7dSTobias Sarnowskiabc 337f8369d7dSTobias Sarnowski| **X** | Y ^ Z | 338f8369d7dSTobias Sarnowskidef'); 339f8369d7dSTobias Sarnowski 340f8369d7dSTobias Sarnowski $calls = array ( 341f8369d7dSTobias Sarnowski array('document_start',array()), 342f8369d7dSTobias Sarnowski array('p_open',array()), 343f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 344f8369d7dSTobias Sarnowski array('p_close',array()), 345f8369d7dSTobias Sarnowski array('table_open',array(3, 1, 6)), 346f8369d7dSTobias Sarnowski array('tablerow_open',array()), 347f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'right',1)), 348f8369d7dSTobias Sarnowski array('cdata',array(' ')), 349f8369d7dSTobias Sarnowski array('strong_open',array()), 350f8369d7dSTobias Sarnowski array('cdata',array('X')), 351f8369d7dSTobias Sarnowski array('strong_close',array()), 352f8369d7dSTobias Sarnowski array('cdata',array(' ')), 353f8369d7dSTobias Sarnowski array('tablecell_close',array()), 354f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 355f8369d7dSTobias Sarnowski array('cdata',array(' Y ')), 356f8369d7dSTobias Sarnowski array('tablecell_close',array()), 357f8369d7dSTobias Sarnowski array('tableheader_open',array(1,'center',1)), 358f8369d7dSTobias Sarnowski array('cdata',array(' Z ')), 359f8369d7dSTobias Sarnowski array('tableheader_close',array()), 360f8369d7dSTobias Sarnowski array('tablerow_close',array()), 361f8369d7dSTobias Sarnowski array('table_close',array(27)), 362f8369d7dSTobias Sarnowski array('p_open',array()), 363f8369d7dSTobias Sarnowski array('cdata',array('def')), 364f8369d7dSTobias Sarnowski array('p_close',array()), 365f8369d7dSTobias Sarnowski array('document_end',array()), 366f8369d7dSTobias Sarnowski ); 367f8369d7dSTobias Sarnowski 368f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 369f8369d7dSTobias Sarnowski 370f8369d7dSTobias Sarnowski } 371f8369d7dSTobias Sarnowski 372f8369d7dSTobias Sarnowski function testTableEol() { 373f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 374f8369d7dSTobias Sarnowski $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); 375f8369d7dSTobias Sarnowski $this->P->parse(' 376f8369d7dSTobias Sarnowskiabc 377f8369d7dSTobias Sarnowski| Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 378f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 379f8369d7dSTobias Sarnowskidef'); 380f8369d7dSTobias Sarnowski $calls = array ( 381f8369d7dSTobias Sarnowski array('document_start',array()), 382f8369d7dSTobias Sarnowski array('p_open',array()), 383f8369d7dSTobias Sarnowski array('cdata',array("abc")), 384f8369d7dSTobias Sarnowski array('p_close',array()), 385f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 386f8369d7dSTobias Sarnowski array('tablerow_open',array()), 387f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 388f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 389f8369d7dSTobias Sarnowski array('tablecell_close',array()), 390f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 391f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 392f8369d7dSTobias Sarnowski array('tablecell_close',array()), 393f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 394f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 395f8369d7dSTobias Sarnowski array('tablecell_close',array()), 396f8369d7dSTobias Sarnowski array('tablerow_close',array()), 397f8369d7dSTobias Sarnowski array('tablerow_open',array()), 398f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 399f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 400f8369d7dSTobias Sarnowski array('tablecell_close',array()), 401f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 402f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 403f8369d7dSTobias Sarnowski array('tablecell_close',array()), 404f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 405f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 406f8369d7dSTobias Sarnowski array('tablecell_close',array()), 407f8369d7dSTobias Sarnowski array('tablerow_close',array()), 408f8369d7dSTobias Sarnowski array('table_close',array(121)), 409f8369d7dSTobias Sarnowski array('p_open',array()), 410f8369d7dSTobias Sarnowski array('cdata',array('def')), 411f8369d7dSTobias Sarnowski array('p_close',array()), 412f8369d7dSTobias Sarnowski array('document_end',array()), 413f8369d7dSTobias Sarnowski ); 414f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 415f8369d7dSTobias Sarnowski } 416f8369d7dSTobias Sarnowski 417f8369d7dSTobias Sarnowski // This is really a failing test - formatting able to spread across cols 418f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 419f8369d7dSTobias Sarnowski function testTableStrong() { 420f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 421f8369d7dSTobias Sarnowski $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong')); 422f8369d7dSTobias Sarnowski $this->P->parse(' 423f8369d7dSTobias Sarnowskiabc 424f8369d7dSTobias Sarnowski| **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** | 425f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 426f8369d7dSTobias Sarnowskidef'); 427f8369d7dSTobias Sarnowski $calls = array ( 428f8369d7dSTobias Sarnowski array('document_start',array()), 429f8369d7dSTobias Sarnowski array('p_open',array()), 430f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 431f8369d7dSTobias Sarnowski array('p_close',array()), 432f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 433f8369d7dSTobias Sarnowski array('tablerow_open',array()), 434f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 435f8369d7dSTobias Sarnowski array('cdata',array(' ')), 436f8369d7dSTobias Sarnowski array('strong_open',array()), 437f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 1')), 438f8369d7dSTobias Sarnowski array('strong_close',array()), 439f8369d7dSTobias Sarnowski array('cdata',array(' ')), 440f8369d7dSTobias Sarnowski array('tablecell_close',array()), 441f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 442f8369d7dSTobias Sarnowski array('cdata',array(' ')), 443f8369d7dSTobias Sarnowski array('strong_open',array()), 444f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 445f8369d7dSTobias Sarnowski array('strong_close',array()), 446f8369d7dSTobias Sarnowski array('cdata',array(' ')), 447f8369d7dSTobias Sarnowski array('tablecell_close',array()), 448f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 449f8369d7dSTobias Sarnowski array('cdata',array('')), 450f8369d7dSTobias Sarnowski array('tablecell_close',array()), 451f8369d7dSTobias Sarnowski array('tablerow_close',array()), 452f8369d7dSTobias Sarnowski array('tablerow_open',array()), 453f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 454f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 455f8369d7dSTobias Sarnowski array('tablecell_close',array()), 456f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 457f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 458f8369d7dSTobias Sarnowski array('tablecell_close',array()), 459f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 460f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 461f8369d7dSTobias Sarnowski array('tablecell_close',array()), 462f8369d7dSTobias Sarnowski array('tablerow_close',array()), 463f8369d7dSTobias Sarnowski array('table_close',array(129)), 464f8369d7dSTobias Sarnowski array('p_open',array()), 465f8369d7dSTobias Sarnowski array('cdata',array('def')), 466f8369d7dSTobias Sarnowski array('p_close',array()), 467f8369d7dSTobias Sarnowski array('document_end',array()), 468f8369d7dSTobias Sarnowski ); 469f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 470f8369d7dSTobias Sarnowski } 471f8369d7dSTobias Sarnowski 472f8369d7dSTobias Sarnowski // This is really a failing test - unformatted able to spread across cols 473f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 474f8369d7dSTobias Sarnowski function testTableUnformatted() { 475f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 476f8369d7dSTobias Sarnowski $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted()); 477f8369d7dSTobias Sarnowski $this->P->parse(' 478f8369d7dSTobias Sarnowskiabc 479f8369d7dSTobias Sarnowski| <nowiki>Row 0 Col 1</nowiki> | <nowiki>Row 0 Col 2 | Row 0 Col 3</nowiki> | 480f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 481f8369d7dSTobias Sarnowskidef'); 482f8369d7dSTobias Sarnowski $calls = array ( 483f8369d7dSTobias Sarnowski array('document_start',array()), 484f8369d7dSTobias Sarnowski array('p_open',array()), 485f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 486f8369d7dSTobias Sarnowski array('p_close',array()), 487f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 488f8369d7dSTobias Sarnowski array('tablerow_open',array()), 489f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 490f8369d7dSTobias Sarnowski array('cdata',array(' ')), 491f8369d7dSTobias Sarnowski array('unformatted',array('Row 0 Col 1')), 492f8369d7dSTobias Sarnowski array('cdata',array(' ')), 493f8369d7dSTobias Sarnowski array('tablecell_close',array()), 494f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 495f8369d7dSTobias Sarnowski array('cdata',array(' ')), 496f8369d7dSTobias Sarnowski array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')), 497f8369d7dSTobias Sarnowski array('cdata',array(' ')), 498f8369d7dSTobias Sarnowski array('tablecell_close',array()), 499f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 500f8369d7dSTobias Sarnowski array('cdata',array('')), 501f8369d7dSTobias Sarnowski array('tablecell_close',array()), 502f8369d7dSTobias Sarnowski array('tablerow_close',array()), 503f8369d7dSTobias Sarnowski array('tablerow_open',array()), 504f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 505f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 506f8369d7dSTobias Sarnowski array('tablecell_close',array()), 507f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 508f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 509f8369d7dSTobias Sarnowski array('tablecell_close',array()), 510f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 511f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 512f8369d7dSTobias Sarnowski array('tablecell_close',array()), 513f8369d7dSTobias Sarnowski array('tablerow_close',array()), 514f8369d7dSTobias Sarnowski array('table_close',array(155)), 515f8369d7dSTobias Sarnowski array('p_open',array()), 516f8369d7dSTobias Sarnowski array('cdata',array('def')), 517f8369d7dSTobias Sarnowski array('p_close',array()), 518f8369d7dSTobias Sarnowski array('document_end',array()), 519f8369d7dSTobias Sarnowski ); 520f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 521f8369d7dSTobias Sarnowski } 522f8369d7dSTobias Sarnowski 523f8369d7dSTobias Sarnowski function testTableLinebreak() { 524f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 525f8369d7dSTobias Sarnowski $this->P->addMode('linebreak',new Doku_Parser_Mode_Linebreak()); 526f8369d7dSTobias Sarnowski $this->P->parse(' 527f8369d7dSTobias Sarnowskiabc 528f8369d7dSTobias Sarnowski| Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 | 529f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 530f8369d7dSTobias Sarnowskidef'); 531f8369d7dSTobias Sarnowski $calls = array ( 532f8369d7dSTobias Sarnowski array('document_start',array()), 533f8369d7dSTobias Sarnowski array('p_open',array()), 534f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 535f8369d7dSTobias Sarnowski array('p_close',array()), 536f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 537f8369d7dSTobias Sarnowski array('tablerow_open',array()), 538f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 539f8369d7dSTobias Sarnowski array('cdata',array(' Row 0')), 540f8369d7dSTobias Sarnowski array('linebreak',array()), 541f8369d7dSTobias Sarnowski array('cdata',array('Col 1 ')), 542f8369d7dSTobias Sarnowski array('tablecell_close',array()), 543f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 544f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 2 ')), 545f8369d7dSTobias Sarnowski array('tablecell_close',array()), 546f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 547f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 548f8369d7dSTobias Sarnowski array('tablecell_close',array()), 549f8369d7dSTobias Sarnowski array('tablerow_close',array()), 550f8369d7dSTobias Sarnowski array('tablerow_open',array()), 551f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 552f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 553f8369d7dSTobias Sarnowski array('tablecell_close',array()), 554f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 555f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 556f8369d7dSTobias Sarnowski array('tablecell_close',array()), 557f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 558f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 559f8369d7dSTobias Sarnowski array('tablecell_close',array()), 560f8369d7dSTobias Sarnowski array('tablerow_close',array()), 561f8369d7dSTobias Sarnowski array('table_close',array(123)), 562f8369d7dSTobias Sarnowski array('p_open',array()), 563f8369d7dSTobias Sarnowski array('cdata',array('def')), 564f8369d7dSTobias Sarnowski array('p_close',array()), 565f8369d7dSTobias Sarnowski array('document_end',array()), 566f8369d7dSTobias Sarnowski ); 567f8369d7dSTobias Sarnowski 568f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 569f8369d7dSTobias Sarnowski } 570f8369d7dSTobias Sarnowski 571f8369d7dSTobias Sarnowski // This is really a failing test - footnote able to spread across cols 572f8369d7dSTobias Sarnowski // Problem is fixing it would mean a major rewrite of table handling 573f8369d7dSTobias Sarnowski function testTableFootnote() { 574f8369d7dSTobias Sarnowski $this->P->addMode('table',new Doku_Parser_Mode_Table()); 575f8369d7dSTobias Sarnowski $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote()); 576f8369d7dSTobias Sarnowski $this->P->parse(' 577f8369d7dSTobias Sarnowskiabc 578f8369d7dSTobias Sarnowski| ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) | 579f8369d7dSTobias Sarnowski| Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 580f8369d7dSTobias Sarnowskidef'); 581f8369d7dSTobias Sarnowski $calls = array ( 582f8369d7dSTobias Sarnowski array('document_start',array()), 583f8369d7dSTobias Sarnowski array('p_open',array()), 584f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 585f8369d7dSTobias Sarnowski array('p_close',array()), 586f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 587f8369d7dSTobias Sarnowski array('tablerow_open',array()), 588f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 589f8369d7dSTobias Sarnowski array('cdata',array(' ')), 590f8369d7dSTobias Sarnowski array('nest', array ( array ( 591f8369d7dSTobias Sarnowski array('footnote_open',array()), 592f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 1')), 593f8369d7dSTobias Sarnowski array('footnote_close',array()), 594f8369d7dSTobias Sarnowski ))), 595f8369d7dSTobias Sarnowski array('cdata',array(' ')), 596f8369d7dSTobias Sarnowski array('tablecell_close',array()), 597f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 598f8369d7dSTobias Sarnowski array('cdata',array(' ')), 599f8369d7dSTobias Sarnowski array('nest', array ( array ( 600f8369d7dSTobias Sarnowski array('footnote_open',array()), 601f8369d7dSTobias Sarnowski array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 602f8369d7dSTobias Sarnowski array('footnote_close',array()), 603f8369d7dSTobias Sarnowski ))), 604f8369d7dSTobias Sarnowski array('cdata',array(' ')), 605f8369d7dSTobias Sarnowski array('tablecell_close',array()), 606f8369d7dSTobias Sarnowski array('tablecell_open',array(1,null,1)), 607f8369d7dSTobias Sarnowski array('cdata',array('')), 608f8369d7dSTobias Sarnowski array('tablecell_close',array()), 609f8369d7dSTobias Sarnowski array('tablerow_close',array()), 610f8369d7dSTobias Sarnowski array('tablerow_open',array()), 611f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 612f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 613f8369d7dSTobias Sarnowski array('tablecell_close',array()), 614f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 615f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 2 ')), 616f8369d7dSTobias Sarnowski array('tablecell_close',array()), 617f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 618f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 619f8369d7dSTobias Sarnowski array('tablecell_close',array()), 620f8369d7dSTobias Sarnowski array('tablerow_close',array()), 621f8369d7dSTobias Sarnowski array('table_close',array(129)), 622f8369d7dSTobias Sarnowski array('p_open',array()), 623f8369d7dSTobias Sarnowski array('cdata',array('def')), 624f8369d7dSTobias Sarnowski array('p_close',array()), 625f8369d7dSTobias Sarnowski array('document_end',array()), 626f8369d7dSTobias Sarnowski ); 627f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 628f8369d7dSTobias Sarnowski } 629*5a41afe6SChristopher Smith 630*5a41afe6SChristopher Smith function testTable_FS1833() { 631*5a41afe6SChristopher Smith $syntax = " \n| Row 0 Col 1 |\n"; 632*5a41afe6SChristopher Smith $this->P->addMode('table',new Doku_Parser_Mode_Table()); 633*5a41afe6SChristopher Smith $this->P->parse($syntax); 634*5a41afe6SChristopher Smith $calls = array ( 635*5a41afe6SChristopher Smith array('document_start',array()), 636*5a41afe6SChristopher Smith array('table_open',array(1, 1, 2)), 637*5a41afe6SChristopher Smith array('tablerow_open',array()), 638*5a41afe6SChristopher Smith array('tablecell_open',array(1,'left',1)), 639*5a41afe6SChristopher Smith array('cdata',array(' Row 0 Col 1 ')), 640*5a41afe6SChristopher Smith array('tablecell_close',array()), 641*5a41afe6SChristopher Smith array('tablerow_close',array()), 642*5a41afe6SChristopher Smith array('table_close',array(strlen($syntax))), 643*5a41afe6SChristopher Smith array('document_end',array()), 644*5a41afe6SChristopher Smith ); 645*5a41afe6SChristopher Smith $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 646*5a41afe6SChristopher Smith } 647*5a41afe6SChristopher Smith 648f8369d7dSTobias Sarnowski} 649f8369d7dSTobias Sarnowski 650