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