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