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