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