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