xref: /dokuwiki/_test/tests/inc/parser/parser_headers.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
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