[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\Parsing\ParserMode\Acronym; 4 use dokuwiki\Parsing\ParserMode\Entity; 5 use dokuwiki\Parsing\ParserMode\Hr; 6 use dokuwiki\Parsing\ParserMode\Multiplyentity; 7 use dokuwiki\Parsing\ParserMode\Smiley; 8 use dokuwiki\Parsing\ParserMode\Wordblock; 9 10 require_once 'parser.inc.php'; 11 12 class TestOfDoku_Parser_Replacements extends TestOfDoku_Parser { 13 14 function testSingleAcronym() { 15 $this->P->addMode('acronym',new Acronym(array('FOOBAR'))); 16 $this->P->parse('abc FOOBAR xyz'); 17 18 $calls = array ( 19 array('document_start',array()), 20 array('p_open',array()), 21 array('cdata',array("\n".'abc ')), 22 array('acronym',array('FOOBAR')), 23 array('cdata',array(' xyz')), 24 array('p_close',array()), 25 array('document_end',array()), 26 ); 27 28 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 29 } 30 31 function testAlmostAnAcronym() { 32 $this->P->addMode('acronym',new Acronym(array('FOOBAR'))); 33 $this->P->parse('abcFOOBARxyz'); 34 35 $calls = array ( 36 array('document_start',array()), 37 array('p_open',array()), 38 array('cdata',array("\n".'abcFOOBARxyz')), 39 array('p_close',array()), 40 array('document_end',array()), 41 ); 42 43 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 44 } 45 46 function testPickAcronymCorrectly() { 47 $this->P->addMode('acronym',new Acronym(array('FOO'))); 48 $this->P->parse('FOOBAR FOO'); 49 50 $calls = array ( 51 array('document_start',array()), 52 array('p_open',array()), 53 array('cdata',array("\n".'FOOBAR ')), 54 array('acronym',array('FOO')), 55 array('cdata',array('')), 56 array('p_close',array()), 57 array('document_end',array()), 58 ); 59 60 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 61 } 62 63 function testMultipleAcronyms() { 64 $this->P->addMode('acronym',new Acronym(array('FOO','BAR'))); 65 $this->P->parse('abc FOO def BAR xyz'); 66 67 $calls = array ( 68 array('document_start',array()), 69 array('p_open',array()), 70 array('cdata',array("\n".'abc ')), 71 array('acronym',array('FOO')), 72 array('cdata',array(' def ')), 73 array('acronym',array('BAR')), 74 array('cdata',array(' xyz')), 75 array('p_close',array()), 76 array('document_end',array()), 77 ); 78 79 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 80 81 } 82 83 function testMultipleAcronymsWithSubset1() { 84 $this->P->addMode('acronym',new Acronym(array('FOO','A.FOO','FOO.1','A.FOO.1'))); 85 $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); 86 87 $calls = array ( 88 array('document_start',array()), 89 array('p_open',array()), 90 array('cdata',array("\n")), 91 array('acronym',array('FOO')), 92 array('cdata',array(" ")), 93 array('acronym',array('A.FOO')), 94 array('cdata',array(" ")), 95 array('acronym',array('FOO.1')), 96 array('cdata',array(" ")), 97 array('acronym',array('A.FOO.1')), 98 array('cdata',array('')), 99 array('p_close',array()), 100 array('document_end',array()), 101 ); 102 103 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 104 } 105 106 function testMultipleAcronymsWithSubset2() { 107 $this->P->addMode('acronym',new Acronym(array('A.FOO.1','FOO.1','A.FOO','FOO'))); 108 $this->P->parse('FOO A.FOO FOO.1 A.FOO.1'); 109 110 $calls = array ( 111 array('document_start',array()), 112 array('p_open',array()), 113 array('cdata',array("\n")), 114 array('acronym',array('FOO')), 115 array('cdata',array(" ")), 116 array('acronym',array('A.FOO')), 117 array('cdata',array(" ")), 118 array('acronym',array('FOO.1')), 119 array('cdata',array(" ")), 120 array('acronym',array('A.FOO.1')), 121 array('cdata',array('')), 122 array('p_close',array()), 123 array('document_end',array()), 124 ); 125 126 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 127 } 128 129 function testSingleSmileyFail() { 130 $this->P->addMode('smiley',new Smiley(array(':-)'))); 131 $this->P->parse('abc:-)xyz'); 132 133 $calls = array ( 134 array('document_start',array()), 135 array('p_open',array()), 136 array('cdata',array("\nabc:-)xyz")), 137 array('p_close',array()), 138 array('document_end',array()), 139 ); 140 141 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 142 } 143 144 function testSingleSmiley() { 145 $this->P->addMode('smiley',new Smiley(array(':-)'))); 146 $this->P->parse('abc :-) xyz'); 147 148 $calls = array ( 149 array('document_start',array()), 150 array('p_open',array()), 151 array('cdata',array("\n".'abc ')), 152 array('smiley',array(':-)')), 153 array('cdata',array(' xyz')), 154 array('p_close',array()), 155 array('document_end',array()), 156 ); 157 158 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 159 } 160 161 function testMultipleSmileysFail() { 162 $this->P->addMode('smiley',new Smiley(array(':-)','^_^'))); 163 $this->P->parse('abc:-)x^_^yz'); 164 165 $calls = array ( 166 array('document_start',array()), 167 array('p_open',array()), 168 array('cdata',array("\nabc:-)x^_^yz")), 169 array('p_close',array()), 170 array('document_end',array()), 171 ); 172 173 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 174 } 175 176 function testMultipleSmileys() { 177 $this->P->addMode('smiley',new Smiley(array(':-)','^_^'))); 178 $this->P->parse('abc :-) x ^_^ yz'); 179 180 $calls = array ( 181 array('document_start',array()), 182 array('p_open',array()), 183 array('cdata',array("\n".'abc ')), 184 array('smiley',array(':-)')), 185 array('cdata',array(' x ')), 186 array('smiley',array('^_^')), 187 array('cdata',array(' yz')), 188 array('p_close',array()), 189 array('document_end',array()), 190 ); 191 192 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 193 } 194 195 function testBackslashSmileyFail() { 196 // This smiley is really :-\\ but escaping makes like interesting 197 $this->P->addMode('smiley',new Smiley(array(':-\\\\'))); 198 $this->P->parse('abc:-\\\xyz'); 199 200 $calls = array ( 201 array('document_start',array()), 202 array('p_open',array()), 203 array('cdata',array("\nabc".':-\\\\'."xyz")), 204 array('p_close',array()), 205 array('document_end',array()), 206 ); 207 208 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 209 } 210 211 function testBackslashSmiley() { 212 // This smiley is really :-\\ but escaping makes like interesting 213 $this->P->addMode('smiley',new Smiley(array(':-\\\\'))); 214 $this->P->parse('abc :-\\\ xyz'); 215 216 $calls = array ( 217 array('document_start',array()), 218 array('p_open',array()), 219 array('cdata',array("\n".'abc ')), 220 array('smiley',array(':-\\\\')), 221 array('cdata',array(' xyz')), 222 array('p_close',array()), 223 array('document_end',array()), 224 ); 225 226 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 227 } 228 229 function testSingleWordblock() { 230 $this->P->addMode('wordblock',new Wordblock(array('CAT'))); 231 $this->P->parse('abc CAT xyz'); 232 233 $calls = array ( 234 array('document_start',array()), 235 array('p_open',array()), 236 array('cdata',array("\n".'abc ')), 237 array('wordblock',array('CAT')), 238 array('cdata',array(' xyz')), 239 array('p_close',array()), 240 array('document_end',array()), 241 ); 242 243 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 244 } 245 246 function testWordblockCase() { 247 $this->P->addMode('wordblock',new Wordblock(array('CAT'))); 248 $this->P->parse('abc cat xyz'); 249 250 $calls = array ( 251 array('document_start',array()), 252 array('p_open',array()), 253 array('cdata',array("\n".'abc ')), 254 array('wordblock',array('cat')), 255 array('cdata',array(' xyz')), 256 array('p_close',array()), 257 array('document_end',array()), 258 ); 259 260 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 261 } 262 263 function testMultipleWordblock() { 264 $this->P->addMode('wordblock',new Wordblock(array('CAT','dog'))); 265 $this->P->parse('abc cat x DOG yz'); 266 267 $calls = array ( 268 array('document_start',array()), 269 array('p_open',array()), 270 array('cdata',array("\n".'abc ')), 271 array('wordblock',array('cat')), 272 array('cdata',array(' x ')), 273 array('wordblock',array('DOG')), 274 array('cdata',array(' yz')), 275 array('p_close',array()), 276 array('document_end',array()), 277 ); 278 279 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 280 } 281 282 function testSingleEntity() { 283 $this->P->addMode('entity',new Entity(array('->'))); 284 $this->P->parse('x -> y'); 285 286 $calls = array ( 287 array('document_start',array()), 288 array('p_open',array()), 289 array('cdata',array("\n".'x ')), 290 array('entity',array('->')), 291 array('cdata',array(' y')), 292 array('p_close',array()), 293 array('document_end',array()), 294 ); 295 296 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 297 } 298 299 function testMultipleEntities() { 300 $this->P->addMode('entity',new Entity(array('->','<-'))); 301 $this->P->parse('x -> y <- z'); 302 303 $calls = array ( 304 array('document_start',array()), 305 array('p_open',array()), 306 array('cdata',array("\n".'x ')), 307 array('entity',array('->')), 308 array('cdata',array(' y ')), 309 array('entity',array('<-')), 310 array('cdata',array(' z')), 311 array('p_close',array()), 312 array('document_end',array()), 313 ); 314 315 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 316 } 317 318 function testMultiplyEntity() { 319 $this->P->addMode('multiplyentity',new Multiplyentity()); 320 $this->P->parse('Foo 10x20 Bar'); 321 322 $calls = array ( 323 array('document_start',array()), 324 array('p_open',array()), 325 array('cdata',array("\n".'Foo ')), 326 array('multiplyentity',array(10,20)), 327 array('cdata',array(' Bar')), 328 array('p_close',array()), 329 array('document_end',array()), 330 ); 331 332 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 333 } 334 335 function testMultiplyEntityHex() { 336 // the multiply entity pattern should not match hex numbers, eg. 0x123 337 $this->P->addMode('multiplyentity',new Multiplyentity()); 338 $this->P->parse('Foo 0x123 Bar'); 339 340 $calls = array ( 341 array('document_start',array()), 342 array('p_open',array()), 343 array('cdata',array("\n".'Foo 0x123 Bar')), 344 array('p_close',array()), 345 array('document_end',array()), 346 ); 347 348 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 349 } 350 351 function testHR() { 352 $this->P->addMode('hr',new Hr()); 353 $this->P->parse("Foo \n ---- \n Bar"); 354 355 $calls = array ( 356 array('document_start',array()), 357 array('p_open',array()), 358 array('cdata',array("\n".'Foo ')), 359 array('p_close',array()), 360 array('hr',array()), 361 array('p_open',array()), 362 array('cdata',array("\n Bar")), 363 array('p_close',array()), 364 array('document_end',array()), 365 ); 366 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 367 } 368 369 function testHREol() { 370 $this->P->addMode('hr',new Hr()); 371 $this->P->parse("Foo \n----\n Bar"); 372 373 $calls = array ( 374 array('document_start',array()), 375 array('p_open',array()), 376 array('cdata',array("\n".'Foo ')), 377 array('p_close',array()), 378 array('hr',array()), 379 array('p_open',array()), 380 array('cdata',array("\n Bar")), 381 array('p_close',array()), 382 array('document_end',array()), 383 ); 384 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 385 } 386 } 387
title
Description
Body
title
Description
Body
title
Description
Body
title
Body