[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\Parsing\ParserMode\Eol; 4 use dokuwiki\Parsing\ParserMode\Footnote; 5 use dokuwiki\Parsing\ParserMode\Formatting; 6 use dokuwiki\Parsing\ParserMode\Linebreak; 7 use dokuwiki\Parsing\ParserMode\Table; 8 use dokuwiki\Parsing\ParserMode\Unformatted; 9 10 require_once 'parser.inc.php'; 11 12 class TestOfDoku_Parser_Table extends TestOfDoku_Parser { 13 14 function testTable() { 15 $this->P->addMode('table',new Table()); 16 $this->P->parse(' 17 abc 18 | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 19 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 20 def'); 21 $calls = array ( 22 array('document_start',array()), 23 array('p_open',array()), 24 array('cdata',array("\n\nabc")), 25 array('p_close',array()), 26 array('table_open',array(3, 2, 6)), 27 array('tablerow_open',array()), 28 array('tablecell_open',array(1,'left',1)), 29 array('cdata',array(' Row 0 Col 1 ')), 30 array('tablecell_close',array()), 31 array('tablecell_open',array(1,'left',1)), 32 array('cdata',array(' Row 0 Col 2 ')), 33 array('tablecell_close',array()), 34 array('tablecell_open',array(1,'left',1)), 35 array('cdata',array(' Row 0 Col 3 ')), 36 array('tablecell_close',array()), 37 array('tablerow_close',array()), 38 array('tablerow_open',array()), 39 array('tablecell_open',array(1,'left',1)), 40 array('cdata',array(' Row 1 Col 1 ')), 41 array('tablecell_close',array()), 42 array('tablecell_open',array(1,'left',1)), 43 array('cdata',array(' Row 1 Col 2 ')), 44 array('tablecell_close',array()), 45 array('tablecell_open',array(1,'left',1)), 46 array('cdata',array(' Row 1 Col 3 ')), 47 array('tablecell_close',array()), 48 array('tablerow_close',array()), 49 array('table_close',array(121)), 50 array('p_open',array()), 51 array('cdata',array('def')), 52 array('p_close',array()), 53 array('document_end',array()), 54 ); 55 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 56 } 57 58 function testTableWinEOL() { 59 $this->P->addMode('table',new Table()); 60 $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"); 61 $calls = array ( 62 array('document_start',array()), 63 array('p_open',array()), 64 array('cdata',array("\n\nabc")), 65 array('p_close',array()), 66 array('table_open',array(3, 2, 6)), 67 array('tablerow_open',array()), 68 array('tablecell_open',array(1,'left',1)), 69 array('cdata',array(' Row 0 Col 1 ')), 70 array('tablecell_close',array()), 71 array('tablecell_open',array(1,'left',1)), 72 array('cdata',array(' Row 0 Col 2 ')), 73 array('tablecell_close',array()), 74 array('tablecell_open',array(1,'left',1)), 75 array('cdata',array(' Row 0 Col 3 ')), 76 array('tablecell_close',array()), 77 array('tablerow_close',array()), 78 array('tablerow_open',array()), 79 array('tablecell_open',array(1,'left',1)), 80 array('cdata',array(' Row 1 Col 1 ')), 81 array('tablecell_close',array()), 82 array('tablecell_open',array(1,'left',1)), 83 array('cdata',array(' Row 1 Col 2 ')), 84 array('tablecell_close',array()), 85 array('tablecell_open',array(1,'left',1)), 86 array('cdata',array(' Row 1 Col 3 ')), 87 array('tablecell_close',array()), 88 array('tablerow_close',array()), 89 array('table_close',array(121)), 90 array('p_open',array()), 91 array('cdata',array('def')), 92 array('p_close',array()), 93 array('document_end',array()), 94 ); 95 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 96 } 97 98 function testEmptyTable() { 99 $this->P->addMode('table',new Table()); 100 $this->P->parse(' 101 abc 102 | 103 def'); 104 105 $calls = array ( 106 array('document_start',array()), 107 array('p_open',array()), 108 array('cdata',array("\n\nabc")), 109 array('p_close',array()), 110 array('table_open',array(0, 1, 6)), 111 array('tablerow_open',array()), 112 array('tablerow_close',array()), 113 array('table_close',array(7)), 114 array('p_open',array()), 115 array('cdata',array('def')), 116 array('p_close',array()), 117 array('document_end',array()), 118 ); 119 120 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 121 } 122 123 function testTableHeaders() { 124 $this->P->addMode('table',new Table()); 125 $this->P->parse(' 126 abc 127 ^ X | Y ^ Z | 128 def'); 129 130 $calls = array ( 131 array('document_start',array()), 132 array('p_open',array()), 133 array('cdata',array("\n\nabc")), 134 array('p_close',array()), 135 array('table_open',array(3, 1, 6)), 136 array('tablerow_open',array()), 137 array('tableheader_open',array(1,NULL,1)), 138 array('cdata',array(' X ')), 139 array('tableheader_close',array()), 140 array('tablecell_open',array(1,NULL,1)), 141 array('cdata',array(' Y ')), 142 array('tablecell_close',array()), 143 array('tableheader_open',array(1,NULL,1)), 144 array('cdata',array(' Z ')), 145 array('tableheader_close',array()), 146 array('tablerow_close',array()), 147 array('table_close',array(19)), 148 array('p_open',array()), 149 array('cdata',array('def')), 150 array('p_close',array()), 151 array('document_end',array()), 152 ); 153 154 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 155 156 } 157 158 function testTableHead() { 159 $this->P->addMode('table',new Table()); 160 $this->P->parse(' 161 abc 162 ^ X ^ Y ^ Z ^ 163 | x | y | z | 164 def'); 165 166 $calls = array ( 167 array('document_start',array()), 168 array('p_open',array()), 169 array('cdata',array("\n\nabc")), 170 array('p_close',array()), 171 array('table_open',array(3, 2, 6)), 172 array('tablethead_open',array()), 173 array('tablerow_open',array()), 174 array('tableheader_open',array(1,NULL,1)), 175 array('cdata',array(' X ')), 176 array('tableheader_close',array()), 177 array('tableheader_open',array(1,NULL,1)), 178 array('cdata',array(' Y ')), 179 array('tableheader_close',array()), 180 array('tableheader_open',array(1,NULL,1)), 181 array('cdata',array(' Z ')), 182 array('tableheader_close',array()), 183 array('tablerow_close',array()), 184 array('tablethead_close',array()), 185 array('tablerow_open',array()), 186 array('tablecell_open',array(1,NULL,1)), 187 array('cdata',array(' x ')), 188 array('tablecell_close',array()), 189 array('tablecell_open',array(1,NULL,1)), 190 array('cdata',array(' y ')), 191 array('tablecell_close',array()), 192 array('tablecell_open',array(1,NULL,1)), 193 array('cdata',array(' z ')), 194 array('tablecell_close',array()), 195 array('tablerow_close',array()), 196 array('table_close',array(33)), 197 array('p_open',array()), 198 array('cdata',array('def')), 199 array('p_close',array()), 200 array('document_end',array()), 201 ); 202 203 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 204 205 } 206 207 function testTableHeadOneRowTable() { 208 $this->P->addMode('table',new Table()); 209 $this->P->parse(' 210 abc 211 ^ X ^ Y ^ Z ^ 212 def'); 213 214 $calls = array ( 215 array('document_start',array()), 216 array('p_open',array()), 217 array('cdata',array("\n\nabc")), 218 array('p_close',array()), 219 array('table_open',array(3, 1, 6)), 220 array('tablerow_open',array()), 221 array('tableheader_open',array(1,NULL,1)), 222 array('cdata',array(' X ')), 223 array('tableheader_close',array()), 224 array('tableheader_open',array(1,NULL,1)), 225 array('cdata',array(' Y ')), 226 array('tableheader_close',array()), 227 array('tableheader_open',array(1,NULL,1)), 228 array('cdata',array(' Z ')), 229 array('tableheader_close',array()), 230 array('tablerow_close',array()), 231 array('table_close',array(19)), 232 array('p_open',array()), 233 array('cdata',array('def')), 234 array('p_close',array()), 235 array('document_end',array()), 236 ); 237 238 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 239 240 } 241 242 function testTableHeadMultiline() { 243 $this->P->addMode('table',new Table()); 244 $this->P->parse(' 245 abc 246 ^ X1 ^ Y1 ^ Z1 ^ 247 ^ X2 ^ Y2 ^ Z2 ^ 248 | A | B | C | 249 def'); 250 251 $calls = array ( 252 array('document_start',array()), 253 array('p_open',array()), 254 array('cdata',array("\n\nabc")), 255 array('p_close',array()), 256 array('table_open',array(3, 3, 6)), 257 array('tablethead_open',array()), 258 array('tablerow_open',array()), 259 array('tableheader_open',array(1,NULL,1)), 260 array('cdata',array(' X1 ')), 261 array('tableheader_close',array()), 262 array('tableheader_open',array(1,NULL,1)), 263 array('cdata',array(' Y1 ')), 264 array('tableheader_close',array()), 265 array('tableheader_open',array(1,NULL,1)), 266 array('cdata',array(' Z1 ')), 267 array('tableheader_close',array()), 268 array('tablerow_close',array()), 269 array('tablerow_open',array()), 270 array('tableheader_open',array(1,NULL,1)), 271 array('cdata',array(' X2 ')), 272 array('tableheader_close',array()), 273 array('tableheader_open',array(1,NULL,1)), 274 array('cdata',array(' Y2 ')), 275 array('tableheader_close',array()), 276 array('tableheader_open',array(1,NULL,1)), 277 array('cdata',array(' Z2 ')), 278 array('tableheader_close',array()), 279 array('tablerow_close',array()), 280 array('tablethead_close',array()), 281 array('tablerow_open',array()), 282 array('tablecell_open',array(1,NULL,1)), 283 array('cdata',array(' A ')), 284 array('tablecell_close',array()), 285 array('tablecell_open',array(1,NULL,1)), 286 array('cdata',array(' B ')), 287 array('tablecell_close',array()), 288 array('tablecell_open',array(1,NULL,1)), 289 array('cdata',array(' C ')), 290 array('tablecell_close',array()), 291 array('tablerow_close',array()), 292 array('table_close',array(53)), 293 array('p_open',array()), 294 array('cdata',array('def')), 295 array('p_close',array()), 296 array('document_end',array()), 297 ); 298 299 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 300 301 } 302 303 function testCellAlignment() { 304 $this->P->addMode('table',new Table()); 305 $this->P->parse(' 306 abc 307 | X | Y ^ Z | 308 def'); 309 310 $calls = array ( 311 array('document_start',array()), 312 array('p_open',array()), 313 array('cdata',array("\n\nabc")), 314 array('p_close',array()), 315 array('table_open',array(3, 1, 6)), 316 array('tablerow_open',array()), 317 array('tablecell_open',array(1,'right',1)), 318 array('cdata',array(' X ')), 319 array('tablecell_close',array()), 320 array('tablecell_open',array(1,'left',1)), 321 array('cdata',array(' Y ')), 322 array('tablecell_close',array()), 323 array('tableheader_open',array(1,'center',1)), 324 array('cdata',array(' Z ')), 325 array('tableheader_close',array()), 326 array('tablerow_close',array()), 327 array('table_close',array(23)), 328 array('p_open',array()), 329 array('cdata',array('def')), 330 array('p_close',array()), 331 array('document_end',array()), 332 ); 333 334 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 335 } 336 337 function testCellSpan() { 338 $this->P->addMode('table',new Table()); 339 $this->P->parse(' 340 abc 341 | d || e | 342 | f ^ ^| 343 |||| 344 def'); 345 346 $calls = array ( 347 array('document_start',array()), 348 array('p_open',array()), 349 array('cdata',array("\n\nabc")), 350 array('p_close',array()), 351 array('table_open',array(3, 3, 6)), 352 array('tablerow_open',array()), 353 array('tablecell_open',array(2,'right',1)), 354 array('cdata',array(' d ')), 355 array('tablecell_close',array()), 356 array('tablecell_open',array(1,NULL,1)), 357 array('cdata',array(' e ')), 358 array('tablecell_close',array()), 359 array('tablerow_close',array()), 360 array('tablerow_open',array()), 361 array('tablecell_open',array(1,NULL,1)), 362 array('cdata',array(' f ')), 363 array('tablecell_close',array()), 364 array('tableheader_open',array(2,NULL,1)), 365 array('cdata',array(' ')), 366 array('tableheader_close',array()), 367 array('tablerow_close',array()), 368 array('tablerow_open',array()), 369 array('tablerow_close',array()), 370 array('table_close',array(31)), 371 array('p_open',array()), 372 array('cdata',array('def')), 373 array('p_close',array()), 374 array('document_end',array()), 375 ); 376 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 377 } 378 379 function testCellRowSpan() { 380 $this->P->addMode('table',new Table()); 381 $this->P->parse(' 382 abc 383 | a | c:::|| 384 |:::^ d | e| 385 |b ^ ::: |:::f| 386 def'); 387 388 $calls = array ( 389 array('document_start',array()), 390 array('p_open',array()), 391 array('cdata',array("\n\nabc")), 392 array('p_close',array()), 393 array('table_open',array(3, 3, 6)), 394 array('tablerow_open',array()), 395 array('tablecell_open',array(1,NULL,2)), 396 array('cdata',array(' a ')), 397 array('tablecell_close',array()), 398 array('tablecell_open',array(2,'right',1)), 399 array('cdata',array(' c:::')), 400 array('tablecell_close',array()), 401 array('tablerow_close',array()), 402 array('tablerow_open',array()), 403 array('tableheader_open',array(1,'left',2)), 404 array('cdata',array(' d ')), 405 array('tableheader_close',array()), 406 array('tablecell_open',array(1,NULL,1)), 407 array('cdata',array(' e')), 408 array('tablecell_close',array()), 409 array('tablerow_close',array()), 410 array('tablerow_open',array()), 411 array('tablecell_open',array(1,'left',1)), 412 array('cdata',array('b ')), 413 array('tablecell_close',array()), 414 array('tablecell_open',array(1,NULL,1)), 415 array('cdata',array(':::f')), 416 array('tablecell_close',array()), 417 array('tablerow_close',array()), 418 array('table_close',array(51)), 419 array('p_open',array()), 420 array('cdata',array('def')), 421 array('p_close',array()), 422 array('document_end',array()), 423 ); 424 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 425 } 426 427 function testCellRowSpanFirstRow() { 428 $this->P->addMode('table',new Table()); 429 $this->P->parse(' 430 abc 431 |::: ^ d:::^:::| ::: | 432 | b ^ e | | ::: | 433 |c ^ ::: | |:::| 434 def'); 435 436 $calls = array ( 437 array('document_start',array()), 438 array('p_open',array()), 439 array('cdata',array("\n\nabc")), 440 array('p_close',array()), 441 array('table_open',array(4, 3, 6)), 442 array('tablerow_open',array()), 443 array('tablecell_open',array(1,NULL,1)), 444 array('cdata',array('')), 445 array('tablecell_close',array()), 446 array('tableheader_open',array(1,'right',1)), 447 array('cdata',array(' d:::')), 448 array('tableheader_close',array()), 449 array('tableheader_open',array(1,NULL,1)), 450 array('cdata',array('')), 451 array('tableheader_close',array()), 452 array('tablecell_open',array(1,NULL,3)), 453 array('cdata',array('')), 454 array('tablecell_close',array()), 455 array('tablerow_close',array()), 456 array('tablerow_open',array()), 457 array('tablecell_open',array(1,NULL,1)), 458 array('cdata',array(' b ')), 459 array('tablecell_close',array()), 460 array('tableheader_open',array(1,'left',2)), 461 array('cdata',array(' e ')), 462 array('tableheader_close',array()), 463 array('tablecell_open',array(1,NULL,1)), 464 array('cdata',array(' ')), 465 array('tablecell_close',array()), 466 array('tablerow_close',array()), 467 array('tablerow_open',array()), 468 array('tablecell_open',array(1,'left',1)), 469 array('cdata',array('c ')), 470 array('tablecell_close',array()), 471 array('tablecell_open',array(1,NULL,1)), 472 array('cdata',array(' ')), 473 array('tablecell_close',array()), 474 array('tablerow_close',array()), 475 476 array('table_close',array(69)), 477 array('p_open',array()), 478 array('cdata',array('def')), 479 array('p_close',array()), 480 array('document_end',array()), 481 ); 482 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 483 } 484 485 function testRowSpanTableHead() { 486 $this->P->addMode('table',new Table()); 487 $this->P->parse(' 488 abc 489 ^ X1 ^ Y1 ^ Z1 ^ 490 ^ X2 ^ ::: ^ Z2 ^ 491 | A3 | B3 | C3 | 492 def'); 493 494 $calls = array ( 495 array('document_start',array()), 496 array('p_open',array()), 497 array('cdata',array("\n\nabc")), 498 array('p_close',array()), 499 array('table_open',array(3, 3, 6)), 500 array('tablethead_open',array()), 501 array('tablerow_open',array()), 502 array('tableheader_open',array(1,NULL,1)), 503 array('cdata',array(' X1 ')), 504 array('tableheader_close',array()), 505 array('tableheader_open',array(1,NULL,2)), 506 array('cdata',array(' Y1 ')), 507 array('tableheader_close',array()), 508 array('tableheader_open',array(1,NULL,1)), 509 array('cdata',array(' Z1 ')), 510 array('tableheader_close',array()), 511 array('tablerow_close',array()), 512 array('tablerow_open',array()), 513 array('tableheader_open',array(1,NULL,1)), 514 array('cdata',array(' X2 ')), 515 array('tableheader_close',array()), 516 array('tableheader_open',array(1,NULL,1)), 517 array('cdata',array(' Z2 ')), 518 array('tableheader_close',array()), 519 array('tablerow_close',array()), 520 array('tablethead_close',array()), 521 array('tablerow_open',array()), 522 array('tablecell_open',array(1,NULL,1)), 523 array('cdata',array(' A3 ')), 524 array('tablecell_close',array()), 525 array('tablecell_open',array(1,NULL,1)), 526 array('cdata',array(' B3 ')), 527 array('tablecell_close',array()), 528 array('tablecell_open',array(1,NULL,1)), 529 array('cdata',array(' C3 ')), 530 array('tablecell_close',array()), 531 array('tablerow_close',array()), 532 array('table_close',array(57)), 533 array('p_open',array()), 534 array('cdata',array('def')), 535 array('p_close',array()), 536 array('document_end',array()), 537 ); 538 539 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 540 541 } 542 543 function testRowSpanAcrossTableHeadBoundary() { 544 $this->P->addMode('table',new Table()); 545 $this->P->parse(' 546 abc 547 ^ X1 ^ Y1 ^ Z1 ^ 548 ^ X2 ^ ::: ^ Z2 ^ 549 | A3 | ::: | C3 | 550 | A4 | ::: | C4 | 551 def'); 552 553 $calls = array ( 554 array('document_start',array()), 555 array('p_open',array()), 556 array('cdata',array("\n\nabc")), 557 array('p_close',array()), 558 array('table_open',array(3, 4, 6)), 559 array('tablethead_open',array()), 560 array('tablerow_open',array()), 561 array('tableheader_open',array(1,NULL,1)), 562 array('cdata',array(' X1 ')), 563 array('tableheader_close',array()), 564 array('tableheader_open',array(1,NULL,2)), 565 array('cdata',array(' Y1 ')), 566 array('tableheader_close',array()), 567 array('tableheader_open',array(1,NULL,1)), 568 array('cdata',array(' Z1 ')), 569 array('tableheader_close',array()), 570 array('tablerow_close',array()), 571 array('tablerow_open',array()), 572 array('tableheader_open',array(1,NULL,1)), 573 array('cdata',array(' X2 ')), 574 array('tableheader_close',array()), 575 array('tableheader_open',array(1,NULL,1)), 576 array('cdata',array(' Z2 ')), 577 array('tableheader_close',array()), 578 array('tablerow_close',array()), 579 array('tablethead_close',array()), 580 array('tablerow_open',array()), 581 array('tablecell_open',array(1,NULL,1)), 582 array('cdata',array(' A3 ')), 583 array('tablecell_close',array()), 584 array('tablecell_open',array(1,NULL,2)), 585 array('cdata',array('')), 586 array('tablecell_close',array()), 587 array('tablecell_open',array(1,NULL,1)), 588 array('cdata',array(' C3 ')), 589 array('tablecell_close',array()), 590 array('tablerow_close',array()), 591 array('tablerow_open',array()), 592 array('tablecell_open',array(1,NULL,1)), 593 array('cdata',array(' A4 ')), 594 array('tablecell_close',array()), 595 array('tablecell_open',array(1,NULL,1)), 596 array('cdata',array(' C4 ')), 597 array('tablecell_close',array()), 598 array('tablerow_close',array()), 599 array('table_close',array(76)), 600 array('p_open',array()), 601 array('cdata',array('def')), 602 array('p_close',array()), 603 array('document_end',array()), 604 ); 605 606 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 607 608 } 609 610 function testCellAlignmentFormatting() { 611 $this->P->addMode('table',new Table()); 612 $this->P->addMode('strong',new Formatting('strong')); 613 $this->P->parse(' 614 abc 615 | **X** | Y ^ Z | 616 def'); 617 618 $calls = array ( 619 array('document_start',array()), 620 array('p_open',array()), 621 array('cdata',array("\n\nabc")), 622 array('p_close',array()), 623 array('table_open',array(3, 1, 6)), 624 array('tablerow_open',array()), 625 array('tablecell_open',array(1,'right',1)), 626 array('cdata',array(' ')), 627 array('strong_open',array()), 628 array('cdata',array('X')), 629 array('strong_close',array()), 630 array('cdata',array(' ')), 631 array('tablecell_close',array()), 632 array('tablecell_open',array(1,'left',1)), 633 array('cdata',array(' Y ')), 634 array('tablecell_close',array()), 635 array('tableheader_open',array(1,'center',1)), 636 array('cdata',array(' Z ')), 637 array('tableheader_close',array()), 638 array('tablerow_close',array()), 639 array('table_close',array(27)), 640 array('p_open',array()), 641 array('cdata',array('def')), 642 array('p_close',array()), 643 array('document_end',array()), 644 ); 645 646 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 647 648 } 649 650 function testTableEol() { 651 $this->P->addMode('table',new Table()); 652 $this->P->addMode('eol',new Eol()); 653 $this->P->parse(' 654 abc 655 | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 656 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 657 def'); 658 $calls = array ( 659 array('document_start',array()), 660 array('p_open',array()), 661 array('cdata',array("abc")), 662 array('p_close',array()), 663 array('table_open',array(3, 2, 6)), 664 array('tablerow_open',array()), 665 array('tablecell_open',array(1,'left',1)), 666 array('cdata',array(' Row 0 Col 1 ')), 667 array('tablecell_close',array()), 668 array('tablecell_open',array(1,'left',1)), 669 array('cdata',array(' Row 0 Col 2 ')), 670 array('tablecell_close',array()), 671 array('tablecell_open',array(1,'left',1)), 672 array('cdata',array(' Row 0 Col 3 ')), 673 array('tablecell_close',array()), 674 array('tablerow_close',array()), 675 array('tablerow_open',array()), 676 array('tablecell_open',array(1,'left',1)), 677 array('cdata',array(' Row 1 Col 1 ')), 678 array('tablecell_close',array()), 679 array('tablecell_open',array(1,'left',1)), 680 array('cdata',array(' Row 1 Col 2 ')), 681 array('tablecell_close',array()), 682 array('tablecell_open',array(1,'left',1)), 683 array('cdata',array(' Row 1 Col 3 ')), 684 array('tablecell_close',array()), 685 array('tablerow_close',array()), 686 array('table_close',array(121)), 687 array('p_open',array()), 688 array('cdata',array('def')), 689 array('p_close',array()), 690 array('document_end',array()), 691 ); 692 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 693 } 694 695 // This is really a failing test - formatting able to spread across cols 696 // Problem is fixing it would mean a major rewrite of table handling 697 function testTableStrong() { 698 $this->P->addMode('table',new Table()); 699 $this->P->addMode('strong',new Formatting('strong')); 700 $this->P->parse(' 701 abc 702 | **Row 0 Col 1** | **Row 0 Col 2 | Row 0 Col 3** | 703 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 704 def'); 705 $calls = array ( 706 array('document_start',array()), 707 array('p_open',array()), 708 array('cdata',array("\n\nabc")), 709 array('p_close',array()), 710 array('table_open',array(3, 2, 6)), 711 array('tablerow_open',array()), 712 array('tablecell_open',array(1,'left',1)), 713 array('cdata',array(' ')), 714 array('strong_open',array()), 715 array('cdata',array('Row 0 Col 1')), 716 array('strong_close',array()), 717 array('cdata',array(' ')), 718 array('tablecell_close',array()), 719 array('tablecell_open',array(1,'left',1)), 720 array('cdata',array(' ')), 721 array('strong_open',array()), 722 array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 723 array('strong_close',array()), 724 array('cdata',array(' ')), 725 array('tablecell_close',array()), 726 array('tablecell_open',array(1,null,1)), 727 array('cdata',array('')), 728 array('tablecell_close',array()), 729 array('tablerow_close',array()), 730 array('tablerow_open',array()), 731 array('tablecell_open',array(1,'left',1)), 732 array('cdata',array(' Row 1 Col 1 ')), 733 array('tablecell_close',array()), 734 array('tablecell_open',array(1,'left',1)), 735 array('cdata',array(' Row 1 Col 2 ')), 736 array('tablecell_close',array()), 737 array('tablecell_open',array(1,'left',1)), 738 array('cdata',array(' Row 1 Col 3 ')), 739 array('tablecell_close',array()), 740 array('tablerow_close',array()), 741 array('table_close',array(129)), 742 array('p_open',array()), 743 array('cdata',array('def')), 744 array('p_close',array()), 745 array('document_end',array()), 746 ); 747 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 748 } 749 750 // This is really a failing test - unformatted able to spread across cols 751 // Problem is fixing it would mean a major rewrite of table handling 752 function testTableUnformatted() { 753 $this->P->addMode('table',new Table()); 754 $this->P->addMode('unformatted',new Unformatted()); 755 $this->P->parse(' 756 abc 757 | <nowiki>Row 0 Col 1</nowiki> | <nowiki>Row 0 Col 2 | Row 0 Col 3</nowiki> | 758 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 759 def'); 760 $calls = array ( 761 array('document_start',array()), 762 array('p_open',array()), 763 array('cdata',array("\n\nabc")), 764 array('p_close',array()), 765 array('table_open',array(3, 2, 6)), 766 array('tablerow_open',array()), 767 array('tablecell_open',array(1,'left',1)), 768 array('cdata',array(' ')), 769 array('unformatted',array('Row 0 Col 1')), 770 array('cdata',array(' ')), 771 array('tablecell_close',array()), 772 array('tablecell_open',array(1,'left',1)), 773 array('cdata',array(' ')), 774 array('unformatted',array('Row 0 Col 2 | Row 0 Col 3')), 775 array('cdata',array(' ')), 776 array('tablecell_close',array()), 777 array('tablecell_open',array(1,null,1)), 778 array('cdata',array('')), 779 array('tablecell_close',array()), 780 array('tablerow_close',array()), 781 array('tablerow_open',array()), 782 array('tablecell_open',array(1,'left',1)), 783 array('cdata',array(' Row 1 Col 1 ')), 784 array('tablecell_close',array()), 785 array('tablecell_open',array(1,'left',1)), 786 array('cdata',array(' Row 1 Col 2 ')), 787 array('tablecell_close',array()), 788 array('tablecell_open',array(1,'left',1)), 789 array('cdata',array(' Row 1 Col 3 ')), 790 array('tablecell_close',array()), 791 array('tablerow_close',array()), 792 array('table_close',array(155)), 793 array('p_open',array()), 794 array('cdata',array('def')), 795 array('p_close',array()), 796 array('document_end',array()), 797 ); 798 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 799 } 800 801 function testTableLinebreak() { 802 $this->P->addMode('table',new Table()); 803 $this->P->addMode('linebreak',new Linebreak()); 804 $this->P->parse(' 805 abc 806 | Row 0\\\\ Col 1 | Row 0 Col 2 | Row 0 Col 3 | 807 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 808 def'); 809 $calls = array ( 810 array('document_start',array()), 811 array('p_open',array()), 812 array('cdata',array("\n\nabc")), 813 array('p_close',array()), 814 array('table_open',array(3, 2, 6)), 815 array('tablerow_open',array()), 816 array('tablecell_open',array(1,'left',1)), 817 array('cdata',array(' Row 0')), 818 array('linebreak',array()), 819 array('cdata',array('Col 1 ')), 820 array('tablecell_close',array()), 821 array('tablecell_open',array(1,'left',1)), 822 array('cdata',array(' Row 0 Col 2 ')), 823 array('tablecell_close',array()), 824 array('tablecell_open',array(1,'left',1)), 825 array('cdata',array(' Row 0 Col 3 ')), 826 array('tablecell_close',array()), 827 array('tablerow_close',array()), 828 array('tablerow_open',array()), 829 array('tablecell_open',array(1,'left',1)), 830 array('cdata',array(' Row 1 Col 1 ')), 831 array('tablecell_close',array()), 832 array('tablecell_open',array(1,'left',1)), 833 array('cdata',array(' Row 1 Col 2 ')), 834 array('tablecell_close',array()), 835 array('tablecell_open',array(1,'left',1)), 836 array('cdata',array(' Row 1 Col 3 ')), 837 array('tablecell_close',array()), 838 array('tablerow_close',array()), 839 array('table_close',array(123)), 840 array('p_open',array()), 841 array('cdata',array('def')), 842 array('p_close',array()), 843 array('document_end',array()), 844 ); 845 846 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 847 } 848 849 // This is really a failing test - footnote able to spread across cols 850 // Problem is fixing it would mean a major rewrite of table handling 851 function testTableFootnote() { 852 $this->P->addMode('table',new Table()); 853 $this->P->addMode('footnote',new Footnote()); 854 $this->P->parse(' 855 abc 856 | ((Row 0 Col 1)) | ((Row 0 Col 2 | Row 0 Col 3)) | 857 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 858 def'); 859 $calls = array ( 860 array('document_start',array()), 861 array('p_open',array()), 862 array('cdata',array("\n\nabc")), 863 array('p_close',array()), 864 array('table_open',array(3, 2, 6)), 865 array('tablerow_open',array()), 866 array('tablecell_open',array(1,'left',1)), 867 array('cdata',array(' ')), 868 array('nest', array ( array ( 869 array('footnote_open',array()), 870 array('cdata',array('Row 0 Col 1')), 871 array('footnote_close',array()), 872 ))), 873 array('cdata',array(' ')), 874 array('tablecell_close',array()), 875 array('tablecell_open',array(1,'left',1)), 876 array('cdata',array(' ')), 877 array('nest', array ( array ( 878 array('footnote_open',array()), 879 array('cdata',array('Row 0 Col 2 | Row 0 Col 3')), 880 array('footnote_close',array()), 881 ))), 882 array('cdata',array(' ')), 883 array('tablecell_close',array()), 884 array('tablecell_open',array(1,null,1)), 885 array('cdata',array('')), 886 array('tablecell_close',array()), 887 array('tablerow_close',array()), 888 array('tablerow_open',array()), 889 array('tablecell_open',array(1,'left',1)), 890 array('cdata',array(' Row 1 Col 1 ')), 891 array('tablecell_close',array()), 892 array('tablecell_open',array(1,'left',1)), 893 array('cdata',array(' Row 1 Col 2 ')), 894 array('tablecell_close',array()), 895 array('tablecell_open',array(1,'left',1)), 896 array('cdata',array(' Row 1 Col 3 ')), 897 array('tablecell_close',array()), 898 array('tablerow_close',array()), 899 array('table_close',array(129)), 900 array('p_open',array()), 901 array('cdata',array('def')), 902 array('p_close',array()), 903 array('document_end',array()), 904 ); 905 $this->assertEquals($calls,array_map('stripbyteindex',$this->H->calls)); 906 } 907 908 function testTable_FS1833() { 909 $syntax = " \n| Row 0 Col 1 |\n"; 910 $this->P->addMode('table',new Table()); 911 $this->P->parse($syntax); 912 $calls = array ( 913 array('document_start',array()), 914 array('table_open',array(1, 1, 2)), 915 array('tablerow_open',array()), 916 array('tablecell_open',array(1,'left',1)), 917 array('cdata',array(' Row 0 Col 1 ')), 918 array('tablecell_close',array()), 919 array('tablerow_close',array()), 920 array('table_close',array(strlen($syntax))), 921 array('document_end',array()), 922 ); 923 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 924 } 925 926 /** 927 * missing cells in one row get filled up... 928 */ 929 function testTable_CellFix() { 930 $syntax = "\n| r1c1 | r1c2 | r1c3 |\n| r2c1 |\n"; 931 $this->P->addMode('table',new Table()); 932 $this->P->parse($syntax); 933 $calls = array ( 934 array('document_start',array()), 935 array('table_open',array(3, 2, 2)), 936 937 array('tablerow_open',array()), 938 array('tablecell_open',array(1,null,1)), 939 array('cdata',array(' r1c1 ')), 940 array('tablecell_close',array()), 941 array('tablecell_open',array(1,null,1)), 942 array('cdata',array(' r1c2 ')), 943 array('tablecell_close',array()), 944 array('tablecell_open',array(1,null,1)), 945 array('cdata',array(' r1c3 ')), 946 array('tablecell_close',array()), 947 array('tablerow_close',array()), 948 949 array('tablerow_open',array()), 950 array('tablecell_open',array(1,null,1)), 951 array('cdata',array(' r2c1 ')), 952 array('tablecell_close',array()), 953 array('tablecell_open',array(1,null,1)), 954 array('cdata',array('')), 955 array('tablecell_close',array()), 956 array('tablecell_open',array(1,null,1)), 957 array('cdata',array('')), 958 array('tablecell_close',array()), 959 array('tablerow_close',array()), 960 961 array('table_close',array(strlen($syntax))), 962 array('document_end',array()), 963 ); 964 $this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls)); 965 } 966 967 /** 968 * ... even if the longer row comes later 969 */ 970 function testTable_CellFix2() { 971 $syntax = "\n| r1c1 |\n| r2c1 | r2c2 | r2c3 |\n"; 972 $this->P->addMode('table',new Table()); 973 $this->P->parse($syntax); 974 $calls = array ( 975 array('document_start',array()), 976 array('table_open',array(3, 2, 2)), 977 978 array('tablerow_open',array()), 979 array('tablecell_open',array(1,null,1)), 980 array('cdata',array(' r1c1 ')), 981 array('tablecell_close',array()), 982 array('tablecell_open',array(1,null,1)), 983 array('cdata',array('')), 984 array('tablecell_close',array()), 985 array('tablecell_open',array(1,null,1)), 986 array('cdata',array('')), 987 array('tablecell_close',array()), 988 array('tablerow_close',array()), 989 990 array('tablerow_open',array()), 991 array('tablecell_open',array(1,null,1)), 992 array('cdata',array(' r2c1 ')), 993 array('tablecell_close',array()), 994 array('tablecell_open',array(1,null,1)), 995 array('cdata',array(' r2c2 ')), 996 array('tablecell_close',array()), 997 array('tablecell_open',array(1,null,1)), 998 array('cdata',array(' r2c3 ')), 999 array('tablecell_close',array()), 1000 array('tablerow_close',array()), 1001 1002 array('table_close',array(strlen($syntax))), 1003 array('document_end',array()), 1004 ); 1005 $this->assertEquals($calls, array_map('stripbyteindex',$this->H->calls)); 1006 } 1007 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body