xref: /dokuwiki/_test/tests/inc/parser/parser_preformatted.test.php (revision be906b566b9bdfd92c032ee07c4fd077d820a8d1)
1f8369d7dSTobias Sarnowski<?php
236dc94bbSAndreas Gohr
3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Code;
4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Eol;
5*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\File;
6*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Header;
7*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Html;
8*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Listblock;
9*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Php;
10*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Preformatted;
1136dc94bbSAndreas Gohr
12f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
13f8369d7dSTobias Sarnowski
14f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser {
15f8369d7dSTobias Sarnowski
16f8369d7dSTobias Sarnowski    function testFile() {
1736dc94bbSAndreas Gohr        $this->P->addMode('file',new File());
18f8369d7dSTobias Sarnowski        $this->P->parse('Foo <file>testing</file> Bar');
19f8369d7dSTobias Sarnowski        $calls = array (
20f8369d7dSTobias Sarnowski            array('document_start',array()),
21f8369d7dSTobias Sarnowski            array('p_open',array()),
22f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
23f8369d7dSTobias Sarnowski            array('p_close',array()),
24f8369d7dSTobias Sarnowski            array('file',array('testing',null,null)),
25f8369d7dSTobias Sarnowski            array('p_open',array()),
26f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
27f8369d7dSTobias Sarnowski            array('p_close',array()),
28f8369d7dSTobias Sarnowski            array('document_end',array()),
29f8369d7dSTobias Sarnowski        );
30f8369d7dSTobias Sarnowski
31f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
32f8369d7dSTobias Sarnowski    }
33f8369d7dSTobias Sarnowski
34f8369d7dSTobias Sarnowski    function testCode() {
3536dc94bbSAndreas Gohr        $this->P->addMode('code',new Code());
36f8369d7dSTobias Sarnowski        $this->P->parse('Foo <code>testing</code> Bar');
37f8369d7dSTobias Sarnowski        $calls = array (
38f8369d7dSTobias Sarnowski            array('document_start',array()),
39f8369d7dSTobias Sarnowski            array('p_open',array()),
40f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
41f8369d7dSTobias Sarnowski            array('p_close',array()),
42f8369d7dSTobias Sarnowski            array('code',array('testing', null, null)),
43f8369d7dSTobias Sarnowski            array('p_open',array()),
44f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
45f8369d7dSTobias Sarnowski            array('p_close',array()),
46f8369d7dSTobias Sarnowski            array('document_end',array()),
47f8369d7dSTobias Sarnowski        );
48f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
49f8369d7dSTobias Sarnowski    }
50f8369d7dSTobias Sarnowski
51f8369d7dSTobias Sarnowski    function testCodeWhitespace() {
5236dc94bbSAndreas Gohr        $this->P->addMode('code',new Code());
53f8369d7dSTobias Sarnowski        $this->P->parse("Foo <code \n>testing</code> Bar");
54f8369d7dSTobias Sarnowski        $calls = array (
55f8369d7dSTobias Sarnowski            array('document_start',array()),
56f8369d7dSTobias Sarnowski            array('p_open',array()),
57f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
58f8369d7dSTobias Sarnowski            array('p_close',array()),
59f8369d7dSTobias Sarnowski            array('code',array('testing', null, null)),
60f8369d7dSTobias Sarnowski            array('p_open',array()),
61f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
62f8369d7dSTobias Sarnowski            array('p_close',array()),
63f8369d7dSTobias Sarnowski            array('document_end',array()),
64f8369d7dSTobias Sarnowski        );
65f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
66f8369d7dSTobias Sarnowski    }
67f8369d7dSTobias Sarnowski
68f8369d7dSTobias Sarnowski    function testCodeLang() {
6936dc94bbSAndreas Gohr        $this->P->addMode('code',new Code());
70f8369d7dSTobias Sarnowski        $this->P->parse("Foo <code php>testing</code> Bar");
71f8369d7dSTobias Sarnowski        $calls = array (
72f8369d7dSTobias Sarnowski            array('document_start',array()),
73f8369d7dSTobias Sarnowski            array('p_open',array()),
74f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
75f8369d7dSTobias Sarnowski            array('p_close',array()),
76f8369d7dSTobias Sarnowski            array('code',array('testing', 'php', null)),
77f8369d7dSTobias Sarnowski            array('p_open',array()),
78f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
79f8369d7dSTobias Sarnowski            array('p_close',array()),
80f8369d7dSTobias Sarnowski            array('document_end',array()),
81f8369d7dSTobias Sarnowski        );
82f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
83f8369d7dSTobias Sarnowski    }
84f8369d7dSTobias Sarnowski
85f8369d7dSTobias Sarnowski    function testPreformatted() {
8636dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
87f8369d7dSTobias Sarnowski        $this->P->parse("F  oo\n  x  \n    y  \nBar\n");
88f8369d7dSTobias Sarnowski        $calls = array (
89f8369d7dSTobias Sarnowski            array('document_start',array()),
90f8369d7dSTobias Sarnowski            array('p_open',array()),
91f8369d7dSTobias Sarnowski            array('cdata',array("\nF  oo")),
92f8369d7dSTobias Sarnowski            array('p_close',array()),
93f8369d7dSTobias Sarnowski            array('preformatted',array("x  \n  y  ")),
94f8369d7dSTobias Sarnowski            array('p_open',array()),
95f8369d7dSTobias Sarnowski            array('cdata',array('Bar')),
96f8369d7dSTobias Sarnowski            array('p_close',array()),
97f8369d7dSTobias Sarnowski            array('document_end',array()),
98f8369d7dSTobias Sarnowski        );
99f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
100f8369d7dSTobias Sarnowski    }
101f8369d7dSTobias Sarnowski
102f8369d7dSTobias Sarnowski    function testPreformattedWinEOL() {
10336dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
104f8369d7dSTobias Sarnowski        $this->P->parse("F  oo\r\n  x  \r\n    y  \r\nBar\r\n");
105f8369d7dSTobias Sarnowski        $calls = array (
106f8369d7dSTobias Sarnowski            array('document_start',array()),
107f8369d7dSTobias Sarnowski            array('p_open',array()),
108f8369d7dSTobias Sarnowski            array('cdata',array("\nF  oo")),
109f8369d7dSTobias Sarnowski            array('p_close',array()),
110f8369d7dSTobias Sarnowski            array('preformatted',array("x  \n  y  ")),
111f8369d7dSTobias Sarnowski            array('p_open',array()),
112f8369d7dSTobias Sarnowski            array('cdata',array('Bar')),
113f8369d7dSTobias Sarnowski            array('p_close',array()),
114f8369d7dSTobias Sarnowski            array('document_end',array()),
115f8369d7dSTobias Sarnowski        );
116f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
117f8369d7dSTobias Sarnowski    }
118f8369d7dSTobias Sarnowski
119f8369d7dSTobias Sarnowski    function testPreformattedTab() {
12036dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
121f8369d7dSTobias Sarnowski        $this->P->parse("F  oo\n\tx\t\n\t\ty\t\nBar\n");
122f8369d7dSTobias Sarnowski        $calls = array (
123f8369d7dSTobias Sarnowski            array('document_start',array()),
124f8369d7dSTobias Sarnowski            array('p_open',array()),
125f8369d7dSTobias Sarnowski            array('cdata',array("\nF  oo")),
126f8369d7dSTobias Sarnowski            array('p_close',array()),
127f8369d7dSTobias Sarnowski            array('preformatted',array("x\t\n\ty\t")),
128f8369d7dSTobias Sarnowski            array('p_open',array()),
129f8369d7dSTobias Sarnowski            array('cdata',array("Bar")),
130f8369d7dSTobias Sarnowski            array('p_close',array()),
131f8369d7dSTobias Sarnowski            array('document_end',array()),
132f8369d7dSTobias Sarnowski        );
133f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
134f8369d7dSTobias Sarnowski    }
135f8369d7dSTobias Sarnowski
136f8369d7dSTobias Sarnowski    function testPreformattedTabWinEOL() {
13736dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
138f8369d7dSTobias Sarnowski        $this->P->parse("F  oo\r\n\tx\t\r\n\t\ty\t\r\nBar\r\n");
139f8369d7dSTobias Sarnowski        $calls = array (
140f8369d7dSTobias Sarnowski            array('document_start',array()),
141f8369d7dSTobias Sarnowski            array('p_open',array()),
142f8369d7dSTobias Sarnowski            array('cdata',array("\nF  oo")),
143f8369d7dSTobias Sarnowski            array('p_close',array()),
144f8369d7dSTobias Sarnowski            array('preformatted',array("x\t\n\ty\t")),
145f8369d7dSTobias Sarnowski            array('p_open',array()),
146f8369d7dSTobias Sarnowski            array('cdata',array("Bar")),
147f8369d7dSTobias Sarnowski            array('p_close',array()),
148f8369d7dSTobias Sarnowski            array('document_end',array()),
149f8369d7dSTobias Sarnowski        );
150f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
151f8369d7dSTobias Sarnowski    }
152f8369d7dSTobias Sarnowski
153f8369d7dSTobias Sarnowski    function testPreformattedList() {
15436dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
15536dc94bbSAndreas Gohr        $this->P->addMode('listblock',new Listblock());
156f8369d7dSTobias Sarnowski        $this->P->parse("  - x \n  * y \nF  oo\n  x  \n    y  \n  -X\n  *Y\nBar\n");
157f8369d7dSTobias Sarnowski        $calls = array (
158f8369d7dSTobias Sarnowski            array('document_start',array()),
159f8369d7dSTobias Sarnowski            array('listo_open',array()),
160f8369d7dSTobias Sarnowski            array('listitem_open',array(1)),
161f8369d7dSTobias Sarnowski            array('listcontent_open',array()),
162f8369d7dSTobias Sarnowski            array('cdata',array(" x ")),
163f8369d7dSTobias Sarnowski            array('listcontent_close',array()),
164f8369d7dSTobias Sarnowski            array('listitem_close',array()),
165f8369d7dSTobias Sarnowski            array('listo_close',array()),
166f8369d7dSTobias Sarnowski            array('listu_open',array()),
167f8369d7dSTobias Sarnowski            array('listitem_open',array(1)),
168f8369d7dSTobias Sarnowski            array('listcontent_open',array()),
169f8369d7dSTobias Sarnowski            array('cdata',array(" y ")),
170f8369d7dSTobias Sarnowski            array('listcontent_close',array()),
171f8369d7dSTobias Sarnowski            array('listitem_close',array()),
172f8369d7dSTobias Sarnowski            array('listu_close',array()),
173f8369d7dSTobias Sarnowski            array('p_open',array()),
174f8369d7dSTobias Sarnowski            array('cdata',array("F  oo")),
175f8369d7dSTobias Sarnowski            array('p_close',array()),
176f8369d7dSTobias Sarnowski            array('preformatted',array("x  \n  y  \n-X\n*Y")),
177f8369d7dSTobias Sarnowski            array('p_open',array()),
178f8369d7dSTobias Sarnowski            array('cdata',array("Bar")),
179f8369d7dSTobias Sarnowski            array('p_close',array()),
180f8369d7dSTobias Sarnowski            array('document_end',array()),
181f8369d7dSTobias Sarnowski        );
182f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
183f8369d7dSTobias Sarnowski    }
184f8369d7dSTobias Sarnowski
185f8369d7dSTobias Sarnowski    // test for php
186f8369d7dSTobias Sarnowski    function testPHP() {
187f8369d7dSTobias Sarnowski
18836dc94bbSAndreas Gohr        $this->P->addMode('php',new Php());
189f8369d7dSTobias Sarnowski        $this->P->parse('Foo <php>testing</php> Bar');
190f8369d7dSTobias Sarnowski        $calls = array (
191f8369d7dSTobias Sarnowski            array('document_start',array()),
192f8369d7dSTobias Sarnowski            array('p_open',array()),
193f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
194f8369d7dSTobias Sarnowski            array('php',array('testing')),
195f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
196f8369d7dSTobias Sarnowski            array('p_close',array()),
197f8369d7dSTobias Sarnowski            array('document_end',array()),
198f8369d7dSTobias Sarnowski        );
199f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
200f8369d7dSTobias Sarnowski    }
201f8369d7dSTobias Sarnowski
202f8369d7dSTobias Sarnowski    // test with for HTML
203f8369d7dSTobias Sarnowski    function testHTML() {
204f8369d7dSTobias Sarnowski
20536dc94bbSAndreas Gohr        $this->P->addMode('html',new Html());
206f8369d7dSTobias Sarnowski        $this->P->parse('Foo <html>testing</html> Bar');
207f8369d7dSTobias Sarnowski        $calls = array (
208f8369d7dSTobias Sarnowski            array('document_start',array()),
209f8369d7dSTobias Sarnowski            array('p_open',array()),
210f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
211f8369d7dSTobias Sarnowski            array('html',array('testing')),
212f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
213f8369d7dSTobias Sarnowski            array('p_close',array()),
214f8369d7dSTobias Sarnowski            array('document_end',array()),
215f8369d7dSTobias Sarnowski        );
216f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
217f8369d7dSTobias Sarnowski    }
218f8369d7dSTobias Sarnowski
219f8369d7dSTobias Sarnowski
220f8369d7dSTobias Sarnowski
221f8369d7dSTobias Sarnowski    function testPreformattedPlusHeaderAndEol() {
222f8369d7dSTobias Sarnowski        // Note that EOL must come after preformatted!
22336dc94bbSAndreas Gohr        $this->P->addMode('preformatted',new Preformatted());
22436dc94bbSAndreas Gohr        $this->P->addMode('header',new Header());
22536dc94bbSAndreas Gohr        $this->P->addMode('eol',new Eol());
226f8369d7dSTobias Sarnowski        $this->P->parse("F  oo\n  ==Test==\n    y  \nBar\n");
227f8369d7dSTobias Sarnowski        $calls = array (
228f8369d7dSTobias Sarnowski            array('document_start',array()),
229f8369d7dSTobias Sarnowski            array('p_open',array()),
230f8369d7dSTobias Sarnowski            array('cdata',array("F  oo")),
231f8369d7dSTobias Sarnowski            array('p_close',array()),
232f8369d7dSTobias Sarnowski            array('preformatted',array("==Test==\n  y  ")),
233f8369d7dSTobias Sarnowski            array('p_open',array()),
234f8369d7dSTobias Sarnowski            array('cdata',array('Bar')),
235f8369d7dSTobias Sarnowski            array('p_close',array()),
236f8369d7dSTobias Sarnowski            array('document_end',array()),
237f8369d7dSTobias Sarnowski        );
238f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
239f8369d7dSTobias Sarnowski    }
240f8369d7dSTobias Sarnowski}
241f8369d7dSTobias Sarnowski
242