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