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