[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\Parsing\Handler\Lists; 4 use dokuwiki\Parsing\ParserMode\Code; 5 use dokuwiki\Parsing\ParserMode\Eol; 6 use dokuwiki\Parsing\ParserMode\Footnote; 7 use dokuwiki\Parsing\ParserMode\Formatting; 8 use dokuwiki\Parsing\ParserMode\Hr; 9 use dokuwiki\Parsing\ParserMode\Listblock; 10 use dokuwiki\Parsing\ParserMode\Preformatted; 11 use dokuwiki\Parsing\ParserMode\Quote; 12 use dokuwiki\Parsing\ParserMode\Table; 13 use dokuwiki\Parsing\ParserMode\Unformatted; 14 15 require_once 'parser.inc.php'; 16 17 class TestOfDoku_Parser_Footnote extends TestOfDoku_Parser { 18 19 function setUp() : void { 20 parent::setUp(); 21 $this->P->addMode('footnote',new Footnote()); 22 } 23 24 function testFootnote() { 25 $this->P->parse('Foo (( testing )) Bar'); 26 $calls = array ( 27 array('document_start',array()), 28 array('p_open',array()), 29 array('cdata',array("\n".'Foo ')), 30 array('nest', array ( array ( 31 array('footnote_open',array()), 32 array('cdata',array(' testing ')), 33 array('footnote_close',array()), 34 ))), 35 array('cdata',array(' Bar')), 36 array('p_close',array()), 37 array('document_end',array()), 38 ); 39 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 40 } 41 42 function testNotAFootnote() { 43 $this->P->parse("Foo (( testing\n Bar"); 44 $calls = array ( 45 array('document_start',array()), 46 array('p_open',array()), 47 array('cdata',array("\nFoo (( testing\n Bar")), 48 array('p_close',array()), 49 array('document_end',array()), 50 ); 51 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 52 } 53 54 function testFootnoteLinefeed() { 55 $this->P->addMode('eol',new Eol()); 56 $this->P->parse("Foo (( testing\ntesting )) Bar"); 57 $calls = array ( 58 array('document_start',array()), 59 array('p_open',array()), 60 array('cdata',array('Foo ')), 61 array('nest', array ( array ( 62 array('footnote_open',array()), 63 array('cdata',array(" testing\ntesting ")), 64 array('footnote_close',array()), 65 ))), 66 array('cdata',array(' Bar')), 67 array('p_close',array()), 68 array('document_end',array()), 69 ); 70 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 71 } 72 73 function testFootnoteNested() { 74 $this->P->parse('Foo (( x((y))z )) Bar'); 75 $calls = array ( 76 array('document_start',array()), 77 array('p_open',array()), 78 array('cdata',array("\n".'Foo ')), 79 array('nest', array ( array ( 80 array('footnote_open',array()), 81 array('cdata',array(' x((y')), 82 array('footnote_close',array()), 83 ))), 84 array('cdata',array('z )) Bar')), 85 array('p_close',array()), 86 array('document_end',array()), 87 ); 88 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 89 } 90 91 function testFootnoteEol() { 92 $this->P->addMode('eol',new Eol()); 93 $this->P->parse("Foo \nX(( test\ning ))Y\n Bar"); 94 $calls = array ( 95 array('document_start',array()), 96 array('p_open',array()), 97 array('cdata',array('Foo '.DOKU_PARSER_EOL.'X')), 98 array('nest', array ( array ( 99 array('footnote_open',array()), 100 array('cdata',array(" test\ning ")), 101 array('footnote_close',array()), 102 ))), 103 array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar')), 104 array('p_close',array()), 105 array('document_end',array()), 106 ); 107 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 108 } 109 110 function testFootnoteStrong() { 111 $this->P->addMode('strong',new Formatting('strong')); 112 $this->P->parse('Foo (( **testing** )) Bar'); 113 $calls = array ( 114 array('document_start',array()), 115 array('p_open',array()), 116 array('cdata',array("\n".'Foo ')), 117 array('nest', array ( array ( 118 array('footnote_open',array()), 119 array('cdata',array(' ')), 120 array('strong_open',array()), 121 array('cdata',array('testing')), 122 array('strong_close',array()), 123 array('cdata',array(' ')), 124 array('footnote_close',array()), 125 ))), 126 array('cdata',array(' Bar')), 127 array('p_close',array()), 128 array('document_end',array()), 129 ); 130 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 131 } 132 133 function testFootnoteHr() { 134 $this->P->addMode('hr',new Hr()); 135 $this->P->parse("Foo (( \n ---- \n )) Bar"); 136 $calls = array ( 137 array('document_start',array()), 138 array('p_open',array()), 139 array('cdata',array("\n".'Foo ')), 140 array('nest', array ( array ( 141 array('footnote_open',array()), 142 array('cdata',array(' ')), 143 array('hr',array()), 144 array('cdata',array("\n ")), 145 array('footnote_close',array()), 146 ))), 147 array('cdata',array(' Bar')), 148 array('p_close',array()), 149 array('document_end',array()), 150 ); 151 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 152 } 153 154 function testFootnoteCode() { 155 $this->P->addMode('code',new Code()); 156 $this->P->parse("Foo (( <code>Test</code> )) Bar"); 157 $calls = array ( 158 array('document_start',array()), 159 array('p_open',array()), 160 array('cdata',array("\n".'Foo ')), 161 array('nest', array ( array ( 162 array('footnote_open',array()), 163 array('cdata',array(' ')), 164 array('code',array('Test',null,null)), 165 array('cdata',array(' ')), 166 array('footnote_close',array()), 167 ))), 168 array('cdata',array(' Bar')), 169 array('p_close',array()), 170 array('document_end',array()), 171 ); 172 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 173 } 174 175 function testFootnotePreformatted() { 176 $this->P->addMode('preformatted',new Preformatted()); 177 $this->P->parse("Foo (( \n Test\n )) Bar"); 178 $calls = array ( 179 array('document_start',array()), 180 array('p_open',array()), 181 array('cdata',array("\n".'Foo ')), 182 array('nest', array ( array ( 183 array('footnote_open',array()), 184 array('cdata',array(' ')), 185 array('preformatted',array('Test')), 186 array('cdata',array(' ')), 187 array('footnote_close',array()), 188 ))), 189 array('cdata',array(' Bar')), 190 array('p_close',array()), 191 array('document_end',array()), 192 ); 193 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 194 } 195 196 function testFootnotePreformattedEol() { 197 $this->P->addMode('preformatted',new Preformatted()); 198 $this->P->addMode('eol',new Eol()); 199 $this->P->parse("Foo (( \n Test\n )) Bar"); 200 $calls = array ( 201 array('document_start',array()), 202 array('p_open',array()), 203 array('cdata',array('Foo ')), 204 array('nest', array ( array ( 205 array('footnote_open',array()), 206 array('cdata',array(' ')), 207 array('preformatted',array('Test')), 208 array('cdata',array(' ')), 209 array('footnote_close',array()), 210 ))), 211 array('cdata',array(' Bar')), 212 array('p_close',array()), 213 array('document_end',array()), 214 ); 215 216 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 217 } 218 219 function testFootnoteUnformatted() { 220 $this->P->addMode('unformatted',new Unformatted()); 221 $this->P->parse("Foo (( <nowiki>Test</nowiki> )) Bar"); 222 $calls = array ( 223 array('document_start',array()), 224 array('p_open',array()), 225 array('cdata',array("\n".'Foo ')), 226 array('nest', array ( array ( 227 array('footnote_open',array()), 228 array('cdata',array(' ')), 229 array('unformatted',array('Test')), 230 array('cdata',array(' ')), 231 array('footnote_close',array()), 232 ))), 233 array('cdata',array(' Bar')), 234 array('p_close',array()), 235 array('document_end',array()), 236 ); 237 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 238 } 239 240 function testFootnoteNotHeader() { 241 $this->P->addMode('unformatted',new Unformatted()); 242 $this->P->parse("Foo (( \n====Test====\n )) Bar"); 243 $calls = array ( 244 array('document_start',array()), 245 array('p_open',array()), 246 array('cdata',array("\n".'Foo ')), 247 array('nest', array ( array ( 248 array('footnote_open',array()), 249 array('cdata',array(" \n====Test====\n ")), 250 array('footnote_close',array()), 251 ))), 252 array('cdata',array(' Bar')), 253 array('p_close',array()), 254 array('document_end',array()), 255 ); 256 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 257 } 258 259 function testFootnoteTable() { 260 $this->P->addMode('table',new Table()); 261 $this->P->parse("Foo (( 262 | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | 263 | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | 264 )) Bar"); 265 $calls = array ( 266 array('document_start',array()), 267 array('p_open',array()), 268 array('cdata',array("\n".'Foo ')), 269 array('nest', array ( array ( 270 array('footnote_open',array()), 271 array('table_open',array(3, 2, 8)), 272 array('tablerow_open',array()), 273 array('tablecell_open',array(1,'left',1)), 274 array('cdata',array(' Row 0 Col 1 ')), 275 array('tablecell_close',array()), 276 array('tablecell_open',array(1,'left',1)), 277 array('cdata',array(' Row 0 Col 2 ')), 278 array('tablecell_close',array()), 279 array('tablecell_open',array(1,'left',1)), 280 array('cdata',array(' Row 0 Col 3 ')), 281 array('tablecell_close',array()), 282 array('tablerow_close',array()), 283 array('tablerow_open',array()), 284 array('tablecell_open',array(1,'left',1)), 285 array('cdata',array(' Row 1 Col 1 ')), 286 array('tablecell_close',array()), 287 array('tablecell_open',array(1,'left',1)), 288 array('cdata',array(' Row 1 Col 2 ')), 289 array('tablecell_close',array()), 290 array('tablecell_open',array(1,'left',1)), 291 array('cdata',array(' Row 1 Col 3 ')), 292 array('tablecell_close',array()), 293 array('tablerow_close',array()), 294 array('table_close',array(123)), 295 array('cdata',array(' ')), 296 array('footnote_close',array()), 297 ))), 298 array('cdata',array(' Bar')), 299 array('p_close',array()), 300 array('document_end',array()), 301 ); 302 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 303 } 304 305 function testFootnoteList() { 306 $this->P->addMode('listblock',new ListBlock()); 307 $this->P->parse("Foo (( 308 *A 309 * B 310 * C 311 )) Bar"); 312 $calls = array ( 313 array('document_start',array()), 314 array('p_open',array()), 315 array('cdata',array("\n".'Foo ')), 316 array('nest', array ( array ( 317 array('footnote_open',array()), 318 array('listu_open',array()), 319 array('listitem_open',array(1,Lists::NODE)), 320 array('listcontent_open',array()), 321 array('cdata',array("A")), 322 array('listcontent_close',array()), 323 array('listu_open',array()), 324 array('listitem_open',array(2)), 325 array('listcontent_open',array()), 326 array('cdata',array(' B')), 327 array('listcontent_close',array()), 328 array('listitem_close',array()), 329 array('listu_close',array()), 330 array('listitem_close',array()), 331 array('listitem_open',array(1)), 332 array('listcontent_open',array()), 333 array('cdata',array(' C')), 334 array('listcontent_close',array()), 335 array('listitem_close',array()), 336 array('listu_close',array()), 337 array('cdata',array(' ')), 338 array('footnote_close',array()), 339 ))), 340 array('cdata',array(' Bar')), 341 array('p_close',array()), 342 array('document_end',array()), 343 ); 344 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 345 } 346 347 function testFootnoteQuote() { 348 $this->P->addMode('quote',new Quote()); 349 $this->P->parse("Foo (( 350 > def 351 >>ghi 352 )) Bar"); 353 $calls = array ( 354 array('document_start',array()), 355 array('p_open',array()), 356 array('cdata',array("\n".'Foo ')), 357 array('nest', array ( array ( 358 array('footnote_open',array()), 359 array('quote_open',array()), 360 array('cdata',array(" def")), 361 array('quote_open',array()), 362 array('cdata',array("ghi")), 363 array('quote_close',array()), 364 array('quote_close',array()), 365 array('cdata',array(' ')), 366 array('footnote_close',array()), 367 ))), 368 array('cdata',array(' Bar')), 369 array('p_close',array()), 370 array('document_end',array()), 371 ); 372 373 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 374 } 375 376 function testFootnoteNesting() { 377 $this->P->addMode('strong',new Formatting('strong')); 378 $this->P->parse("(( a ** (( b )) ** c ))"); 379 380 $calls = array( 381 array('document_start',array()), 382 array('p_open',array()), 383 array('cdata',array("\n")), 384 array('nest', array ( array ( 385 array('footnote_open',array()), 386 array('cdata',array(' a ')), 387 array('strong_open',array()), 388 array('cdata',array(' (( b ')), 389 array('footnote_close',array()), 390 ))), 391 array('cdata',array(" ")), 392 array('strong_close',array()), 393 array('cdata',array(" c ))")), 394 array('p_close',array()), 395 array('document_end',array()), 396 ); 397 398 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 399 } 400 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body