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