[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

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

   1  <?php
   2  
   3  use dokuwiki\Parsing\ParserMode\Eol;
   4  use dokuwiki\Parsing\ParserMode\Header;
   5  
   6  require_once  'parser.inc.php';
   7  
   8  class TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
   9  
  10      function testHeader1() {
  11          $this->P->addMode('header',new Header());
  12          $this->P->parse("abc \n ====== Header ====== \n def");
  13          $calls = array (
  14              array('document_start',array()),
  15              array('p_open',array()),
  16              array('cdata',array("\nabc ")),
  17              array('p_close',array()),
  18              array('header',array('Header',1,6)),
  19              array('section_open',array(1)),
  20              array('p_open',array()),
  21              array('cdata',array("\n def")),
  22              array('p_close',array()),
  23              array('section_close',array()),
  24              array('document_end',array()),
  25          );
  26          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
  27      }
  28  
  29      function testHeader2() {
  30          $this->P->addMode('header',new Header());
  31          $this->P->parse("abc \n  ===== Header ===== \n def");
  32          $calls = array (
  33              array('document_start',array()),
  34              array('p_open',array()),
  35              array('cdata',array("\nabc ")),
  36              array('p_close',array()),
  37              array('header',array('Header',2,6)),
  38              array('section_open',array(2)),
  39              array('p_open',array()),
  40              array('cdata',array("\n def")),
  41              array('p_close',array()),
  42              array('section_close',array()),
  43              array('document_end',array()),
  44          );
  45          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
  46      }
  47  
  48      function testHeader3() {
  49          $this->P->addMode('header',new Header());
  50          $this->P->parse("abc \n ==== Header ==== \n def");
  51          $calls = array (
  52              array('document_start',array()),
  53              array('p_open',array()),
  54              array('cdata',array("\nabc ")),
  55              array('p_close',array()),
  56              array('header',array('Header',3,6)),
  57              array('section_open',array(3)),
  58              array('p_open',array()),
  59              array('cdata',array("\n def")),
  60              array('p_close',array()),
  61              array('section_close',array()),
  62              array('document_end',array()),
  63          );
  64          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
  65      }
  66  
  67      function testHeader4() {
  68          $this->P->addMode('header',new Header());
  69          $this->P->parse("abc \n === Header === \n def");
  70          $calls = array (
  71              array('document_start',array()),
  72              array('p_open',array()),
  73              array('cdata',array("\nabc ")),
  74              array('p_close',array()),
  75              array('header',array('Header',4,6)),
  76              array('section_open',array(4)),
  77              array('p_open',array()),
  78              array('cdata',array("\n def")),
  79              array('p_close',array()),
  80              array('section_close',array()),
  81              array('document_end',array()),
  82          );
  83          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
  84      }
  85  
  86      function testHeader5() {
  87          $this->P->addMode('header',new Header());
  88          $this->P->parse("abc \n  == Header ==  \n def");
  89          $calls = array (
  90              array('document_start',array()),
  91              array('p_open',array()),
  92              array('cdata',array("\nabc ")),
  93              array('p_close',array()),
  94              array('header',array('Header',5,6)),
  95              array('section_open',array(5)),
  96              array('p_open',array()),
  97              array('cdata',array("\n def")),
  98              array('p_close',array()),
  99              array('section_close',array()),
 100              array('document_end',array()),
 101          );
 102          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 103      }
 104  
 105      function testHeader2UnevenSmaller() {
 106          $this->P->addMode('header',new Header());
 107          $this->P->parse("abc \n  ===== Header ==  \n def");
 108          $calls = array (
 109              array('document_start',array()),
 110              array('p_open',array()),
 111              array('cdata',array("\nabc ")),
 112              array('p_close',array()),
 113              array('header',array('Header',2,6)),
 114              array('section_open',array(2)),
 115              array('p_open',array()),
 116              array('cdata',array("\n def")),
 117              array('p_close',array()),
 118              array('section_close',array()),
 119              array('document_end',array()),
 120          );
 121          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 122      }
 123  
 124      function testHeader2UnevenBigger() {
 125          $this->P->addMode('header',new Header());
 126          $this->P->parse("abc \n  ===== Header ===========  \n def");
 127          $calls = array (
 128              array('document_start',array()),
 129              array('p_open',array()),
 130              array('cdata',array("\nabc ")),
 131              array('p_close',array()),
 132              array('header',array('Header',2,6)),
 133              array('section_open',array(2)),
 134              array('p_open',array()),
 135              array('cdata',array("\n def")),
 136              array('p_close',array()),
 137              array('section_close',array()),
 138              array('document_end',array()),
 139          );
 140          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 141      }
 142  
 143      function testHeaderLarge() {
 144          $this->P->addMode('header',new Header());
 145          $this->P->parse("abc \n ======= Header ======= \n def");
 146          $calls = array (
 147              array('document_start',array()),
 148              array('p_open',array()),
 149              array('cdata',array("\nabc ")),
 150              array('p_close',array()),
 151              array('header',array('Header',1,6)),
 152              array('section_open',array(1)),
 153              array('p_open',array()),
 154              array('cdata',array("\n def")),
 155              array('p_close',array()),
 156              array('section_close',array()),
 157              array('document_end',array()),
 158          );
 159          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 160      }
 161  
 162      function testHeaderSmall() {
 163          $this->P->addMode('header',new Header());
 164          $this->P->parse("abc \n= Header =\n def");
 165          $calls = array (
 166              array('document_start',array()),
 167              array('p_open',array()),
 168              array('cdata',array("\nabc \n= Header =\n def")),
 169              array('p_close',array()),
 170              array('document_end',array()),
 171          );
 172          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 173      }
 174  
 175  
 176      function testHeader1Mixed() {
 177          $this->P->addMode('header',new Header());
 178          $this->P->parse("abc \n====== == Header == ======\n def");
 179          $calls = array (
 180              array('document_start',array()),
 181              array('p_open',array()),
 182              array('cdata',array("\nabc ")),
 183              array('p_close',array()),
 184              array('header',array('== Header ==',1,6)),
 185              array('section_open',array(1)),
 186              array('p_open',array()),
 187              array('cdata',array("\n def")),
 188              array('p_close',array()),
 189              array('section_close',array()),
 190              array('document_end',array()),
 191          );
 192          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 193      }
 194  
 195      function testHeader5Mixed() {
 196          $this->P->addMode('header',new Header());
 197          $this->P->parse("abc \n== ====== Header ====== ==\n def");
 198          $calls = array (
 199              array('document_start',array()),
 200              array('p_open',array()),
 201              array('cdata',array("\nabc ")),
 202              array('p_close',array()),
 203              array('header',array('====== Header ======',5,6)),
 204              array('section_open',array(5)),
 205              array('p_open',array()),
 206              array('cdata',array("\n def")),
 207              array('p_close',array()),
 208              array('section_close',array()),
 209              array('document_end',array()),
 210          );
 211          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 212      }
 213  
 214      function testHeaderMultiline() {
 215          $this->P->addMode('header',new Header());
 216          $this->P->parse("abc \n== ====== Header\n ====== ==\n def");
 217          $calls = array (
 218              array('document_start',array()),
 219              array('p_open',array()),
 220              array('cdata',array("\nabc \n== ====== Header")),
 221              array('p_close',array()),
 222              array('header',array('',1,23)),
 223              array('section_open',array(1)),
 224              array('p_open',array()),
 225              array('cdata',array("\n def")),
 226              array('p_close',array()),
 227              array('section_close',array()),
 228              array('document_end',array()),
 229          );
 230          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 231      }
 232  
 233  #    function testNoToc() {
 234  #        $this->P->addMode('notoc',new NoToc());
 235  #        $this->P->parse('abc ~~NOTOC~~ def');
 236  #        $this->assertFalse($this->H->meta['toc']);
 237  #    }
 238  
 239      function testHeader1Eol() {
 240          $this->P->addMode('header',new Header());
 241          $this->P->addMode('eol',new Eol());
 242          $this->P->parse("abc \n ====== Header ====== \n def");
 243          $calls = array (
 244              array('document_start',array()),
 245              array('p_open',array()),
 246              array('cdata',array('abc ')),
 247              array('p_close',array()),
 248              array('header',array('Header',1, 6)),
 249              array('section_open',array(1)),
 250              array('p_open',array()),
 251              array('cdata',array(' def')),
 252              array('p_close',array()),
 253              array('section_close',array()),
 254              array('document_end',array()),
 255          );
 256          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 257  
 258      }
 259  
 260      function testHeaderMulti2() {
 261          $this->P->addMode('header',new Header());
 262          $this->P->parse("abc \n ====== Header ====== \n def abc \n ===== Header2 ===== \n def");
 263          $calls = array (
 264              array('document_start',array()),
 265              array('p_open',array()),
 266              array('cdata',array("\nabc ")),
 267              array('p_close',array()),
 268              array('header',array('Header',1,6)),
 269              array('section_open',array(1)),
 270              array('p_open',array()),
 271              array('cdata',array("\n def abc ")),
 272              array('p_close',array()),
 273              array('section_close',array()),
 274              array('header',array('Header2',2,39)),
 275              array('section_open',array(2)),
 276              array('p_open',array()),
 277              array('cdata',array("\n def")),
 278              array('p_close',array()),
 279              array('section_close',array()),
 280              array('document_end',array())
 281          );
 282          $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
 283      }
 284  
 285  }
 286