[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/tests/inc/parser/ -> parser_replacements.test.php (source)

   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