xref: /dokuwiki/_test/tests/inc/parser/parser_footnote.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
1*f8369d7dSTobias Sarnowski<?php
2*f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
3*f8369d7dSTobias Sarnowski
4*f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Footnote extends TestOfDoku_Parser {
5*f8369d7dSTobias Sarnowski
6*f8369d7dSTobias Sarnowski    function setup() {
7*f8369d7dSTobias Sarnowski        parent::setup();
8*f8369d7dSTobias Sarnowski        $this->P->addMode('footnote',new Doku_Parser_Mode_Footnote());
9*f8369d7dSTobias Sarnowski    }
10*f8369d7dSTobias Sarnowski
11*f8369d7dSTobias Sarnowski    function testFootnote() {
12*f8369d7dSTobias Sarnowski        $this->P->parse('Foo (( testing )) Bar');
13*f8369d7dSTobias Sarnowski        $calls = array (
14*f8369d7dSTobias Sarnowski            array('document_start',array()),
15*f8369d7dSTobias Sarnowski            array('p_open',array()),
16*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
17*f8369d7dSTobias Sarnowski            array('nest', array ( array (
18*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
19*f8369d7dSTobias Sarnowski              array('cdata',array(' testing ')),
20*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
21*f8369d7dSTobias Sarnowski            ))),
22*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
23*f8369d7dSTobias Sarnowski            array('p_close',array()),
24*f8369d7dSTobias Sarnowski            array('document_end',array()),
25*f8369d7dSTobias Sarnowski        );
26*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
27*f8369d7dSTobias Sarnowski    }
28*f8369d7dSTobias Sarnowski
29*f8369d7dSTobias Sarnowski    function testNotAFootnote() {
30*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( testing\n Bar");
31*f8369d7dSTobias Sarnowski        $calls = array (
32*f8369d7dSTobias Sarnowski            array('document_start',array()),
33*f8369d7dSTobias Sarnowski            array('p_open',array()),
34*f8369d7dSTobias Sarnowski            array('cdata',array("\nFoo (( testing\n 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 testFootnoteLinefeed() {
42*f8369d7dSTobias Sarnowski        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
43*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( testing\ntesting )) 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('Foo ')),
48*f8369d7dSTobias Sarnowski            array('nest', array ( array (
49*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
50*f8369d7dSTobias Sarnowski              array('cdata',array(" testing\ntesting ")),
51*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
52*f8369d7dSTobias Sarnowski            ))),
53*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
54*f8369d7dSTobias Sarnowski            array('p_close',array()),
55*f8369d7dSTobias Sarnowski            array('document_end',array()),
56*f8369d7dSTobias Sarnowski        );
57*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
58*f8369d7dSTobias Sarnowski    }
59*f8369d7dSTobias Sarnowski
60*f8369d7dSTobias Sarnowski    function testFootnoteNested() {
61*f8369d7dSTobias Sarnowski        $this->P->parse('Foo (( x((y))z )) Bar');
62*f8369d7dSTobias Sarnowski        $calls = array (
63*f8369d7dSTobias Sarnowski            array('document_start',array()),
64*f8369d7dSTobias Sarnowski            array('p_open',array()),
65*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
66*f8369d7dSTobias Sarnowski            array('nest', array ( array (
67*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
68*f8369d7dSTobias Sarnowski              array('cdata',array(' x((y')),
69*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
70*f8369d7dSTobias Sarnowski            ))),
71*f8369d7dSTobias Sarnowski            array('cdata',array('z )) Bar')),
72*f8369d7dSTobias Sarnowski            array('p_close',array()),
73*f8369d7dSTobias Sarnowski            array('document_end',array()),
74*f8369d7dSTobias Sarnowski        );
75*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
76*f8369d7dSTobias Sarnowski    }
77*f8369d7dSTobias Sarnowski
78*f8369d7dSTobias Sarnowski    function testFootnoteEol() {
79*f8369d7dSTobias Sarnowski        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
80*f8369d7dSTobias Sarnowski        $this->P->parse("Foo \nX(( test\ning ))Y\n Bar");
81*f8369d7dSTobias Sarnowski        $calls = array (
82*f8369d7dSTobias Sarnowski            array('document_start',array()),
83*f8369d7dSTobias Sarnowski            array('p_open',array()),
84*f8369d7dSTobias Sarnowski            array('cdata',array('Foo '.DOKU_PARSER_EOL.'X')),
85*f8369d7dSTobias Sarnowski            array('nest', array ( array (
86*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
87*f8369d7dSTobias Sarnowski              array('cdata',array(" test\ning ")),
88*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
89*f8369d7dSTobias Sarnowski            ))),
90*f8369d7dSTobias Sarnowski            array('cdata',array('Y'.DOKU_PARSER_EOL.' Bar')),
91*f8369d7dSTobias Sarnowski            array('p_close',array()),
92*f8369d7dSTobias Sarnowski            array('document_end',array()),
93*f8369d7dSTobias Sarnowski        );
94*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
95*f8369d7dSTobias Sarnowski    }
96*f8369d7dSTobias Sarnowski
97*f8369d7dSTobias Sarnowski    function testFootnoteStrong() {
98*f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
99*f8369d7dSTobias Sarnowski        $this->P->parse('Foo (( **testing** )) Bar');
100*f8369d7dSTobias Sarnowski        $calls = array (
101*f8369d7dSTobias Sarnowski            array('document_start',array()),
102*f8369d7dSTobias Sarnowski            array('p_open',array()),
103*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
104*f8369d7dSTobias Sarnowski            array('nest', array ( array (
105*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
106*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
107*f8369d7dSTobias Sarnowski              array('strong_open',array()),
108*f8369d7dSTobias Sarnowski              array('cdata',array('testing')),
109*f8369d7dSTobias Sarnowski              array('strong_close',array()),
110*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
111*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
112*f8369d7dSTobias Sarnowski            ))),
113*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
114*f8369d7dSTobias Sarnowski            array('p_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 testFootnoteHr() {
121*f8369d7dSTobias Sarnowski        $this->P->addMode('hr',new Doku_Parser_Mode_HR());
122*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( \n ---- \n )) Bar");
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("\n".'Foo ')),
127*f8369d7dSTobias Sarnowski            array('nest', array ( array (
128*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
129*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
130*f8369d7dSTobias Sarnowski              array('hr',array()),
131*f8369d7dSTobias Sarnowski              array('cdata',array("\n ")),
132*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
133*f8369d7dSTobias Sarnowski            ))),
134*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
135*f8369d7dSTobias Sarnowski            array('p_close',array()),
136*f8369d7dSTobias Sarnowski            array('document_end',array()),
137*f8369d7dSTobias Sarnowski        );
138*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
139*f8369d7dSTobias Sarnowski    }
140*f8369d7dSTobias Sarnowski
141*f8369d7dSTobias Sarnowski    function testFootnoteCode() {
142*f8369d7dSTobias Sarnowski        $this->P->addMode('code',new Doku_Parser_Mode_Code());
143*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( <code>Test</code> )) Bar");
144*f8369d7dSTobias Sarnowski        $calls = array (
145*f8369d7dSTobias Sarnowski            array('document_start',array()),
146*f8369d7dSTobias Sarnowski            array('p_open',array()),
147*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
148*f8369d7dSTobias Sarnowski            array('nest', array ( array (
149*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
150*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
151*f8369d7dSTobias Sarnowski              array('code',array('Test',null,null)),
152*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
153*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
154*f8369d7dSTobias Sarnowski            ))),
155*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
156*f8369d7dSTobias Sarnowski            array('p_close',array()),
157*f8369d7dSTobias Sarnowski            array('document_end',array()),
158*f8369d7dSTobias Sarnowski        );
159*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
160*f8369d7dSTobias Sarnowski    }
161*f8369d7dSTobias Sarnowski
162*f8369d7dSTobias Sarnowski    function testFootnotePreformatted() {
163*f8369d7dSTobias Sarnowski        $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted());
164*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( \n  Test\n )) Bar");
165*f8369d7dSTobias Sarnowski        $calls = array (
166*f8369d7dSTobias Sarnowski            array('document_start',array()),
167*f8369d7dSTobias Sarnowski            array('p_open',array()),
168*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
169*f8369d7dSTobias Sarnowski            array('nest', array ( array (
170*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
171*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
172*f8369d7dSTobias Sarnowski              array('preformatted',array('Test')),
173*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
174*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
175*f8369d7dSTobias Sarnowski            ))),
176*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
177*f8369d7dSTobias Sarnowski            array('p_close',array()),
178*f8369d7dSTobias Sarnowski            array('document_end',array()),
179*f8369d7dSTobias Sarnowski        );
180*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
181*f8369d7dSTobias Sarnowski    }
182*f8369d7dSTobias Sarnowski
183*f8369d7dSTobias Sarnowski    function testFootnotePreformattedEol() {
184*f8369d7dSTobias Sarnowski        $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted());
185*f8369d7dSTobias Sarnowski        $this->P->addMode('eol',new Doku_Parser_Mode_Eol());
186*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( \n  Test\n )) Bar");
187*f8369d7dSTobias Sarnowski        $calls = array (
188*f8369d7dSTobias Sarnowski            array('document_start',array()),
189*f8369d7dSTobias Sarnowski            array('p_open',array()),
190*f8369d7dSTobias Sarnowski            array('cdata',array('Foo ')),
191*f8369d7dSTobias Sarnowski            array('nest', array ( array (
192*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
193*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
194*f8369d7dSTobias Sarnowski              array('preformatted',array('Test')),
195*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
196*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
197*f8369d7dSTobias Sarnowski            ))),
198*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
199*f8369d7dSTobias Sarnowski            array('p_close',array()),
200*f8369d7dSTobias Sarnowski            array('document_end',array()),
201*f8369d7dSTobias Sarnowski        );
202*f8369d7dSTobias Sarnowski
203*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
204*f8369d7dSTobias Sarnowski    }
205*f8369d7dSTobias Sarnowski
206*f8369d7dSTobias Sarnowski    function testFootnoteUnformatted() {
207*f8369d7dSTobias Sarnowski        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
208*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( <nowiki>Test</nowiki> )) Bar");
209*f8369d7dSTobias Sarnowski        $calls = array (
210*f8369d7dSTobias Sarnowski            array('document_start',array()),
211*f8369d7dSTobias Sarnowski            array('p_open',array()),
212*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
213*f8369d7dSTobias Sarnowski            array('nest', array ( array (
214*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
215*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
216*f8369d7dSTobias Sarnowski              array('unformatted',array('Test')),
217*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
218*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
219*f8369d7dSTobias Sarnowski            ))),
220*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
221*f8369d7dSTobias Sarnowski            array('p_close',array()),
222*f8369d7dSTobias Sarnowski            array('document_end',array()),
223*f8369d7dSTobias Sarnowski        );
224*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
225*f8369d7dSTobias Sarnowski    }
226*f8369d7dSTobias Sarnowski
227*f8369d7dSTobias Sarnowski    function testFootnoteNotHeader() {
228*f8369d7dSTobias Sarnowski        $this->P->addMode('unformatted',new Doku_Parser_Mode_Unformatted());
229*f8369d7dSTobias Sarnowski        $this->P->parse("Foo (( \n====Test====\n )) Bar");
230*f8369d7dSTobias Sarnowski        $calls = array (
231*f8369d7dSTobias Sarnowski            array('document_start',array()),
232*f8369d7dSTobias Sarnowski            array('p_open',array()),
233*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
234*f8369d7dSTobias Sarnowski            array('nest', array ( array (
235*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
236*f8369d7dSTobias Sarnowski              array('cdata',array(" \n====Test====\n ")),
237*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
238*f8369d7dSTobias Sarnowski            ))),
239*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
240*f8369d7dSTobias Sarnowski            array('p_close',array()),
241*f8369d7dSTobias Sarnowski            array('document_end',array()),
242*f8369d7dSTobias Sarnowski        );
243*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
244*f8369d7dSTobias Sarnowski    }
245*f8369d7dSTobias Sarnowski
246*f8369d7dSTobias Sarnowski    function testFootnoteTable() {
247*f8369d7dSTobias Sarnowski        $this->P->addMode('table',new Doku_Parser_Mode_Table());
248*f8369d7dSTobias Sarnowski        $this->P->parse("Foo ((
249*f8369d7dSTobias Sarnowski| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
250*f8369d7dSTobias Sarnowski| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
251*f8369d7dSTobias Sarnowski )) Bar");
252*f8369d7dSTobias Sarnowski        $calls = array (
253*f8369d7dSTobias Sarnowski            array('document_start',array()),
254*f8369d7dSTobias Sarnowski            array('p_open',array()),
255*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
256*f8369d7dSTobias Sarnowski            array('nest', array ( array (
257*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
258*f8369d7dSTobias Sarnowski              array('table_open',array(3, 2, 8)),
259*f8369d7dSTobias Sarnowski              array('tablerow_open',array()),
260*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
261*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 0 Col 1    ')),
262*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
263*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
264*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 0 Col 2     ')),
265*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
266*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
267*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 0 Col 3        ')),
268*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
269*f8369d7dSTobias Sarnowski              array('tablerow_close',array()),
270*f8369d7dSTobias Sarnowski              array('tablerow_open',array()),
271*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
272*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 1 Col 1    ')),
273*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
274*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
275*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 1 Col 2     ')),
276*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
277*f8369d7dSTobias Sarnowski              array('tablecell_open',array(1,'left',1)),
278*f8369d7dSTobias Sarnowski              array('cdata',array(' Row 1 Col 3        ')),
279*f8369d7dSTobias Sarnowski              array('tablecell_close',array()),
280*f8369d7dSTobias Sarnowski              array('tablerow_close',array()),
281*f8369d7dSTobias Sarnowski              array('table_close',array(123)),
282*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
283*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
284*f8369d7dSTobias Sarnowski            ))),
285*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
286*f8369d7dSTobias Sarnowski            array('p_close',array()),
287*f8369d7dSTobias Sarnowski            array('document_end',array()),
288*f8369d7dSTobias Sarnowski        );
289*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
290*f8369d7dSTobias Sarnowski    }
291*f8369d7dSTobias Sarnowski
292*f8369d7dSTobias Sarnowski    function testFootnoteList() {
293*f8369d7dSTobias Sarnowski        $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock());
294*f8369d7dSTobias Sarnowski        $this->P->parse("Foo ((
295*f8369d7dSTobias Sarnowski  *A
296*f8369d7dSTobias Sarnowski    * B
297*f8369d7dSTobias Sarnowski  * C
298*f8369d7dSTobias Sarnowski )) Bar");
299*f8369d7dSTobias Sarnowski        $calls = array (
300*f8369d7dSTobias Sarnowski            array('document_start',array()),
301*f8369d7dSTobias Sarnowski            array('p_open',array()),
302*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
303*f8369d7dSTobias Sarnowski            array('nest', array ( array (
304*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
305*f8369d7dSTobias Sarnowski              array('listu_open',array()),
306*f8369d7dSTobias Sarnowski              array('listitem_open',array(1)),
307*f8369d7dSTobias Sarnowski              array('listcontent_open',array()),
308*f8369d7dSTobias Sarnowski              array('cdata',array("A")),
309*f8369d7dSTobias Sarnowski              array('listcontent_close',array()),
310*f8369d7dSTobias Sarnowski              array('listu_open',array()),
311*f8369d7dSTobias Sarnowski              array('listitem_open',array(2)),
312*f8369d7dSTobias Sarnowski              array('listcontent_open',array()),
313*f8369d7dSTobias Sarnowski              array('cdata',array(' B')),
314*f8369d7dSTobias Sarnowski              array('listcontent_close',array()),
315*f8369d7dSTobias Sarnowski              array('listitem_close',array()),
316*f8369d7dSTobias Sarnowski              array('listu_close',array()),
317*f8369d7dSTobias Sarnowski              array('listitem_close',array()),
318*f8369d7dSTobias Sarnowski              array('listitem_open',array(1)),
319*f8369d7dSTobias Sarnowski              array('listcontent_open',array()),
320*f8369d7dSTobias Sarnowski              array('cdata',array(' C')),
321*f8369d7dSTobias Sarnowski              array('listcontent_close',array()),
322*f8369d7dSTobias Sarnowski              array('listitem_close',array()),
323*f8369d7dSTobias Sarnowski              array('listu_close',array()),
324*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
325*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
326*f8369d7dSTobias Sarnowski            ))),
327*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
328*f8369d7dSTobias Sarnowski            array('p_close',array()),
329*f8369d7dSTobias Sarnowski            array('document_end',array()),
330*f8369d7dSTobias Sarnowski        );
331*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
332*f8369d7dSTobias Sarnowski    }
333*f8369d7dSTobias Sarnowski
334*f8369d7dSTobias Sarnowski    function testFootnoteQuote() {
335*f8369d7dSTobias Sarnowski        $this->P->addMode('quote',new Doku_Parser_Mode_Quote());
336*f8369d7dSTobias Sarnowski        $this->P->parse("Foo ((
337*f8369d7dSTobias Sarnowski> def
338*f8369d7dSTobias Sarnowski>>ghi
339*f8369d7dSTobias Sarnowski )) Bar");
340*f8369d7dSTobias Sarnowski        $calls = array (
341*f8369d7dSTobias Sarnowski            array('document_start',array()),
342*f8369d7dSTobias Sarnowski            array('p_open',array()),
343*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
344*f8369d7dSTobias Sarnowski            array('nest', array ( array (
345*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
346*f8369d7dSTobias Sarnowski              array('quote_open',array()),
347*f8369d7dSTobias Sarnowski              array('cdata',array(" def")),
348*f8369d7dSTobias Sarnowski              array('quote_open',array()),
349*f8369d7dSTobias Sarnowski              array('cdata',array("ghi")),
350*f8369d7dSTobias Sarnowski              array('quote_close',array()),
351*f8369d7dSTobias Sarnowski              array('quote_close',array()),
352*f8369d7dSTobias Sarnowski              array('cdata',array(' ')),
353*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
354*f8369d7dSTobias Sarnowski            ))),
355*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
356*f8369d7dSTobias Sarnowski            array('p_close',array()),
357*f8369d7dSTobias Sarnowski            array('document_end',array()),
358*f8369d7dSTobias Sarnowski        );
359*f8369d7dSTobias Sarnowski
360*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
361*f8369d7dSTobias Sarnowski    }
362*f8369d7dSTobias Sarnowski
363*f8369d7dSTobias Sarnowski    function testFootnoteNesting() {
364*f8369d7dSTobias Sarnowski        $this->P->addMode('strong',new Doku_Parser_Mode_Formatting('strong'));
365*f8369d7dSTobias Sarnowski        $this->P->parse("(( a ** (( b )) ** c ))");
366*f8369d7dSTobias Sarnowski
367*f8369d7dSTobias Sarnowski        $calls = array(
368*f8369d7dSTobias Sarnowski            array('document_start',array()),
369*f8369d7dSTobias Sarnowski            array('p_open',array()),
370*f8369d7dSTobias Sarnowski            array('cdata',array("\n")),
371*f8369d7dSTobias Sarnowski            array('nest', array ( array (
372*f8369d7dSTobias Sarnowski              array('footnote_open',array()),
373*f8369d7dSTobias Sarnowski              array('cdata',array(' a ')),
374*f8369d7dSTobias Sarnowski              array('strong_open',array()),
375*f8369d7dSTobias Sarnowski              array('cdata',array(' (( b ')),
376*f8369d7dSTobias Sarnowski              array('footnote_close',array()),
377*f8369d7dSTobias Sarnowski            ))),
378*f8369d7dSTobias Sarnowski            array('cdata',array(" ")),
379*f8369d7dSTobias Sarnowski            array('strong_close',array()),
380*f8369d7dSTobias Sarnowski            array('cdata',array(" c ))")),
381*f8369d7dSTobias Sarnowski            array('p_close',array()),
382*f8369d7dSTobias Sarnowski            array('document_end',array()),
383*f8369d7dSTobias Sarnowski        );
384*f8369d7dSTobias Sarnowski
385*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
386*f8369d7dSTobias Sarnowski    }
387*f8369d7dSTobias Sarnowski}
388*f8369d7dSTobias Sarnowski
389