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