xref: /dokuwiki/_test/tests/inc/parser/parser_headers.test.php (revision be906b566b9bdfd92c032ee07c4fd077d820a8d1)
1f8369d7dSTobias Sarnowski<?php
236dc94bbSAndreas Gohr
3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Eol;
4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Header;
536dc94bbSAndreas Gohr
6f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
7f8369d7dSTobias Sarnowski
8f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Headers extends TestOfDoku_Parser {
9f8369d7dSTobias Sarnowski
10f8369d7dSTobias Sarnowski    function testHeader1() {
1136dc94bbSAndreas 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() {
3036dc94bbSAndreas 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() {
4936dc94bbSAndreas 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() {
6836dc94bbSAndreas 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() {
8736dc94bbSAndreas 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() {
10636dc94bbSAndreas 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() {
12536dc94bbSAndreas 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() {
14436dc94bbSAndreas 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() {
16336dc94bbSAndreas 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() {
17736dc94bbSAndreas 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() {
19636dc94bbSAndreas 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() {
21536dc94bbSAndreas 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() {
23436dc94bbSAndreas 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() {
24036dc94bbSAndreas Gohr        $this->P->addMode('header',new Header());
24136dc94bbSAndreas 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() {
26136dc94bbSAndreas 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