xref: /dokuwiki/_test/tests/Parsing/ParserMode/ListsTest.php (revision 504c13e8df88563c11b3720b317991bc38835a35)
1*504c13e8SAndreas Gohr<?php
2*504c13e8SAndreas Gohr
3*504c13e8SAndreas Gohrnamespace dokuwiki\test\Parsing\ParserMode;
4*504c13e8SAndreas Gohr
5*504c13e8SAndreas Gohruse dokuwiki\Parsing\Handler\Lists;
6*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Eol;
7*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Footnote;
8*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Strong;
9*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Linebreak;
10*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Listblock;
11*504c13e8SAndreas Gohruse dokuwiki\Parsing\ParserMode\Unformatted;
12*504c13e8SAndreas Gohr
13*504c13e8SAndreas Gohrclass ListsTest extends ParserTestBase
14*504c13e8SAndreas Gohr{
15*504c13e8SAndreas Gohr
16*504c13e8SAndreas Gohr    function testUnorderedList() {
17*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
18*504c13e8SAndreas Gohr        $this->P->parse('
19*504c13e8SAndreas Gohr  *A
20*504c13e8SAndreas Gohr    * B
21*504c13e8SAndreas Gohr  * C
22*504c13e8SAndreas Gohr');
23*504c13e8SAndreas Gohr        $calls = [
24*504c13e8SAndreas Gohr            ['document_start',[]],
25*504c13e8SAndreas Gohr            ['listu_open',[]],
26*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
27*504c13e8SAndreas Gohr            ['listcontent_open',[]],
28*504c13e8SAndreas Gohr            ['cdata',["A"]],
29*504c13e8SAndreas Gohr            ['listcontent_close',[]],
30*504c13e8SAndreas Gohr            ['listu_open',[]],
31*504c13e8SAndreas Gohr            ['listitem_open',[2]],
32*504c13e8SAndreas Gohr            ['listcontent_open',[]],
33*504c13e8SAndreas Gohr            ['cdata',[' B']],
34*504c13e8SAndreas Gohr            ['listcontent_close',[]],
35*504c13e8SAndreas Gohr            ['listitem_close',[]],
36*504c13e8SAndreas Gohr            ['listu_close',[]],
37*504c13e8SAndreas Gohr            ['listitem_close',[]],
38*504c13e8SAndreas Gohr            ['listitem_open',[1]],
39*504c13e8SAndreas Gohr            ['listcontent_open',[]],
40*504c13e8SAndreas Gohr            ['cdata',[' C']],
41*504c13e8SAndreas Gohr            ['listcontent_close',[]],
42*504c13e8SAndreas Gohr            ['listitem_close',[]],
43*504c13e8SAndreas Gohr            ['listu_close',[]],
44*504c13e8SAndreas Gohr            ['document_end',[]],
45*504c13e8SAndreas Gohr        ];
46*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
47*504c13e8SAndreas Gohr    }
48*504c13e8SAndreas Gohr
49*504c13e8SAndreas Gohr    function testOrderedList() {
50*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
51*504c13e8SAndreas Gohr        $this->P->parse('
52*504c13e8SAndreas Gohr  -A
53*504c13e8SAndreas Gohr    - B
54*504c13e8SAndreas Gohr  - C
55*504c13e8SAndreas Gohr');
56*504c13e8SAndreas Gohr        $calls = [
57*504c13e8SAndreas Gohr            ['document_start',[]],
58*504c13e8SAndreas Gohr            ['listo_open',[]],
59*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
60*504c13e8SAndreas Gohr            ['listcontent_open',[]],
61*504c13e8SAndreas Gohr            ['cdata',["A"]],
62*504c13e8SAndreas Gohr            ['listcontent_close',[]],
63*504c13e8SAndreas Gohr            ['listo_open',[]],
64*504c13e8SAndreas Gohr            ['listitem_open',[2]],
65*504c13e8SAndreas Gohr            ['listcontent_open',[]],
66*504c13e8SAndreas Gohr            ['cdata',[' B']],
67*504c13e8SAndreas Gohr            ['listcontent_close',[]],
68*504c13e8SAndreas Gohr            ['listitem_close',[]],
69*504c13e8SAndreas Gohr            ['listo_close',[]],
70*504c13e8SAndreas Gohr            ['listitem_close',[]],
71*504c13e8SAndreas Gohr            ['listitem_open',[1]],
72*504c13e8SAndreas Gohr            ['listcontent_open',[]],
73*504c13e8SAndreas Gohr            ['cdata',[' C']],
74*504c13e8SAndreas Gohr            ['listcontent_close',[]],
75*504c13e8SAndreas Gohr            ['listitem_close',[]],
76*504c13e8SAndreas Gohr            ['listo_close',[]],
77*504c13e8SAndreas Gohr            ['document_end',[]],
78*504c13e8SAndreas Gohr        ];
79*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
80*504c13e8SAndreas Gohr    }
81*504c13e8SAndreas Gohr
82*504c13e8SAndreas Gohr
83*504c13e8SAndreas Gohr    function testMixedList() {
84*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
85*504c13e8SAndreas Gohr        $this->P->parse('
86*504c13e8SAndreas Gohr  -A
87*504c13e8SAndreas Gohr    * B
88*504c13e8SAndreas Gohr  - C
89*504c13e8SAndreas Gohr');
90*504c13e8SAndreas Gohr        $calls = [
91*504c13e8SAndreas Gohr            ['document_start',[]],
92*504c13e8SAndreas Gohr            ['listo_open',[]],
93*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
94*504c13e8SAndreas Gohr            ['listcontent_open',[]],
95*504c13e8SAndreas Gohr            ['cdata',["A"]],
96*504c13e8SAndreas Gohr            ['listcontent_close',[]],
97*504c13e8SAndreas Gohr            ['listu_open',[]],
98*504c13e8SAndreas Gohr            ['listitem_open',[2]],
99*504c13e8SAndreas Gohr            ['listcontent_open',[]],
100*504c13e8SAndreas Gohr            ['cdata',[' B']],
101*504c13e8SAndreas Gohr            ['listcontent_close',[]],
102*504c13e8SAndreas Gohr            ['listitem_close',[]],
103*504c13e8SAndreas Gohr            ['listu_close',[]],
104*504c13e8SAndreas Gohr            ['listitem_close',[]],
105*504c13e8SAndreas Gohr            ['listitem_open',[1]],
106*504c13e8SAndreas Gohr            ['listcontent_open',[]],
107*504c13e8SAndreas Gohr            ['cdata',[' C']],
108*504c13e8SAndreas Gohr            ['listcontent_close',[]],
109*504c13e8SAndreas Gohr            ['listitem_close',[]],
110*504c13e8SAndreas Gohr            ['listo_close',[]],
111*504c13e8SAndreas Gohr            ['document_end',[]],
112*504c13e8SAndreas Gohr        ];
113*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
114*504c13e8SAndreas Gohr    }
115*504c13e8SAndreas Gohr
116*504c13e8SAndreas Gohr    function testUnorderedListWinEOL() {
117*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
118*504c13e8SAndreas Gohr        $this->P->parse("\r\n  *A\r\n    * B\r\n  * C\r\n");
119*504c13e8SAndreas Gohr        $calls = [
120*504c13e8SAndreas Gohr            ['document_start',[]],
121*504c13e8SAndreas Gohr            ['listu_open',[]],
122*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
123*504c13e8SAndreas Gohr            ['listcontent_open',[]],
124*504c13e8SAndreas Gohr            ['cdata',["A"]],
125*504c13e8SAndreas Gohr            ['listcontent_close',[]],
126*504c13e8SAndreas Gohr            ['listu_open',[]],
127*504c13e8SAndreas Gohr            ['listitem_open',[2]],
128*504c13e8SAndreas Gohr            ['listcontent_open',[]],
129*504c13e8SAndreas Gohr            ['cdata',[' B']],
130*504c13e8SAndreas Gohr            ['listcontent_close',[]],
131*504c13e8SAndreas Gohr            ['listitem_close',[]],
132*504c13e8SAndreas Gohr            ['listu_close',[]],
133*504c13e8SAndreas Gohr            ['listitem_close',[]],
134*504c13e8SAndreas Gohr            ['listitem_open',[1]],
135*504c13e8SAndreas Gohr            ['listcontent_open',[]],
136*504c13e8SAndreas Gohr            ['cdata',[' C']],
137*504c13e8SAndreas Gohr            ['listcontent_close',[]],
138*504c13e8SAndreas Gohr            ['listitem_close',[]],
139*504c13e8SAndreas Gohr            ['listu_close',[]],
140*504c13e8SAndreas Gohr            ['document_end',[]],
141*504c13e8SAndreas Gohr        ];
142*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
143*504c13e8SAndreas Gohr    }
144*504c13e8SAndreas Gohr
145*504c13e8SAndreas Gohr    function testOrderedListWinEOL() {
146*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
147*504c13e8SAndreas Gohr        $this->P->parse("\r\n  -A\r\n    - B\r\n  - C\r\n");
148*504c13e8SAndreas Gohr        $calls = [
149*504c13e8SAndreas Gohr            ['document_start',[]],
150*504c13e8SAndreas Gohr            ['listo_open',[]],
151*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
152*504c13e8SAndreas Gohr            ['listcontent_open',[]],
153*504c13e8SAndreas Gohr            ['cdata',["A"]],
154*504c13e8SAndreas Gohr            ['listcontent_close',[]],
155*504c13e8SAndreas Gohr            ['listo_open',[]],
156*504c13e8SAndreas Gohr            ['listitem_open',[2]],
157*504c13e8SAndreas Gohr            ['listcontent_open',[]],
158*504c13e8SAndreas Gohr            ['cdata',[' B']],
159*504c13e8SAndreas Gohr            ['listcontent_close',[]],
160*504c13e8SAndreas Gohr            ['listitem_close',[]],
161*504c13e8SAndreas Gohr            ['listo_close',[]],
162*504c13e8SAndreas Gohr            ['listitem_close',[]],
163*504c13e8SAndreas Gohr            ['listitem_open',[1]],
164*504c13e8SAndreas Gohr            ['listcontent_open',[]],
165*504c13e8SAndreas Gohr            ['cdata',[' C']],
166*504c13e8SAndreas Gohr            ['listcontent_close',[]],
167*504c13e8SAndreas Gohr            ['listitem_close',[]],
168*504c13e8SAndreas Gohr            ['listo_close',[]],
169*504c13e8SAndreas Gohr            ['document_end',[]],
170*504c13e8SAndreas Gohr        ];
171*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
172*504c13e8SAndreas Gohr    }
173*504c13e8SAndreas Gohr
174*504c13e8SAndreas Gohr    function testNotAList() {
175*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
176*504c13e8SAndreas Gohr        $this->P->parse("Foo  -bar  *foo Bar");
177*504c13e8SAndreas Gohr        $calls = [
178*504c13e8SAndreas Gohr            ['document_start',[]],
179*504c13e8SAndreas Gohr            ['p_open',[]],
180*504c13e8SAndreas Gohr            ['cdata',["\nFoo  -bar  *foo Bar"]],
181*504c13e8SAndreas Gohr            ['p_close',[]],
182*504c13e8SAndreas Gohr            ['document_end',[]],
183*504c13e8SAndreas Gohr        ];
184*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
185*504c13e8SAndreas Gohr    }
186*504c13e8SAndreas Gohr
187*504c13e8SAndreas Gohr    function testUnorderedListParagraph() {
188*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
189*504c13e8SAndreas Gohr        $this->P->addMode('eol',new Eol());
190*504c13e8SAndreas Gohr        $this->P->parse('Foo
191*504c13e8SAndreas Gohr  *A
192*504c13e8SAndreas Gohr    * B
193*504c13e8SAndreas Gohr  * C
194*504c13e8SAndreas GohrBar');
195*504c13e8SAndreas Gohr        $calls = [
196*504c13e8SAndreas Gohr            ['document_start',[]],
197*504c13e8SAndreas Gohr            ['p_open',[]],
198*504c13e8SAndreas Gohr            ['cdata',["Foo"]],
199*504c13e8SAndreas Gohr            ['p_close',[]],
200*504c13e8SAndreas Gohr            ['listu_open',[]],
201*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
202*504c13e8SAndreas Gohr            ['listcontent_open',[]],
203*504c13e8SAndreas Gohr            ['cdata',["A"]],
204*504c13e8SAndreas Gohr            ['listcontent_close',[]],
205*504c13e8SAndreas Gohr            ['listu_open',[]],
206*504c13e8SAndreas Gohr            ['listitem_open',[2]],
207*504c13e8SAndreas Gohr            ['listcontent_open',[]],
208*504c13e8SAndreas Gohr            ['cdata',[' B']],
209*504c13e8SAndreas Gohr            ['listcontent_close',[]],
210*504c13e8SAndreas Gohr            ['listitem_close',[]],
211*504c13e8SAndreas Gohr            ['listu_close',[]],
212*504c13e8SAndreas Gohr            ['listitem_close',[]],
213*504c13e8SAndreas Gohr            ['listitem_open',[1]],
214*504c13e8SAndreas Gohr            ['listcontent_open',[]],
215*504c13e8SAndreas Gohr            ['cdata',[' C']],
216*504c13e8SAndreas Gohr            ['listcontent_close',[]],
217*504c13e8SAndreas Gohr            ['listitem_close',[]],
218*504c13e8SAndreas Gohr            ['listu_close',[]],
219*504c13e8SAndreas Gohr            ['p_open',[]],
220*504c13e8SAndreas Gohr            ['cdata',["Bar"]],
221*504c13e8SAndreas Gohr            ['p_close',[]],
222*504c13e8SAndreas Gohr            ['document_end',[]],
223*504c13e8SAndreas Gohr        ];
224*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
225*504c13e8SAndreas Gohr    }
226*504c13e8SAndreas Gohr
227*504c13e8SAndreas Gohr    // This is really a failing test - formatting able to spread across list items
228*504c13e8SAndreas Gohr    // Problem is fixing it would mean a major rewrite of lists
229*504c13e8SAndreas Gohr    function testUnorderedListStrong() {
230*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
231*504c13e8SAndreas Gohr        $this->P->addMode('strong',new Strong());
232*504c13e8SAndreas Gohr        $this->P->parse('
233*504c13e8SAndreas Gohr  ***A**
234*504c13e8SAndreas Gohr    *** B
235*504c13e8SAndreas Gohr  * C**
236*504c13e8SAndreas Gohr');
237*504c13e8SAndreas Gohr        $calls = [
238*504c13e8SAndreas Gohr            ['document_start',[]],
239*504c13e8SAndreas Gohr            ['listu_open',[]],
240*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
241*504c13e8SAndreas Gohr            ['listcontent_open',[]],
242*504c13e8SAndreas Gohr            ['strong_open',[]],
243*504c13e8SAndreas Gohr            ['cdata',["A"]],
244*504c13e8SAndreas Gohr            ['strong_close',[]],
245*504c13e8SAndreas Gohr            ['listcontent_close',[]],
246*504c13e8SAndreas Gohr            ['listu_open',[]],
247*504c13e8SAndreas Gohr            ['listitem_open',[2]],
248*504c13e8SAndreas Gohr            ['listcontent_open',[]],
249*504c13e8SAndreas Gohr            ['strong_open',[]],
250*504c13e8SAndreas Gohr            ['cdata',[" B\n  * C"]],
251*504c13e8SAndreas Gohr            ['strong_close',[]],
252*504c13e8SAndreas Gohr            ['listcontent_close',[]],
253*504c13e8SAndreas Gohr            ['listitem_close',[]],
254*504c13e8SAndreas Gohr            ['listu_close',[]],
255*504c13e8SAndreas Gohr            ['listitem_close',[]],
256*504c13e8SAndreas Gohr            ['listu_close',[]],
257*504c13e8SAndreas Gohr            ['document_end',[]],
258*504c13e8SAndreas Gohr        ];
259*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
260*504c13e8SAndreas Gohr    }
261*504c13e8SAndreas Gohr
262*504c13e8SAndreas Gohr    // This is really a failing test - unformatted able to spread across list items
263*504c13e8SAndreas Gohr    // Problem is fixing it would mean a major rewrite of lists
264*504c13e8SAndreas Gohr    function testUnorderedListUnformatted() {
265*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
266*504c13e8SAndreas Gohr        $this->P->addMode('unformatted',new Unformatted());
267*504c13e8SAndreas Gohr        $this->P->parse('
268*504c13e8SAndreas Gohr  *%%A%%
269*504c13e8SAndreas Gohr    *%% B
270*504c13e8SAndreas Gohr  * C%%
271*504c13e8SAndreas Gohr');
272*504c13e8SAndreas Gohr        $calls = [
273*504c13e8SAndreas Gohr            ['document_start',[]],
274*504c13e8SAndreas Gohr            ['listu_open',[]],
275*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
276*504c13e8SAndreas Gohr            ['listcontent_open',[]],
277*504c13e8SAndreas Gohr            ['unformatted',["A"]],
278*504c13e8SAndreas Gohr            ['listcontent_close',[]],
279*504c13e8SAndreas Gohr            ['listu_open',[]],
280*504c13e8SAndreas Gohr            ['listitem_open',[2]],
281*504c13e8SAndreas Gohr            ['listcontent_open',[]],
282*504c13e8SAndreas Gohr            ['unformatted',[" B\n  * C"]],
283*504c13e8SAndreas Gohr            ['listcontent_close',[]],
284*504c13e8SAndreas Gohr            ['listitem_close',[]],
285*504c13e8SAndreas Gohr            ['listu_close',[]],
286*504c13e8SAndreas Gohr            ['listitem_close',[]],
287*504c13e8SAndreas Gohr            ['listu_close',[]],
288*504c13e8SAndreas Gohr            ['document_end',[]],
289*504c13e8SAndreas Gohr        ];
290*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
291*504c13e8SAndreas Gohr    }
292*504c13e8SAndreas Gohr
293*504c13e8SAndreas Gohr    function testUnorderedListLinebreak() {
294*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
295*504c13e8SAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
296*504c13e8SAndreas Gohr        $this->P->parse('
297*504c13e8SAndreas Gohr  *A\\\\ D
298*504c13e8SAndreas Gohr    * B
299*504c13e8SAndreas Gohr  * C
300*504c13e8SAndreas Gohr');
301*504c13e8SAndreas Gohr        $calls = [
302*504c13e8SAndreas Gohr            ['document_start',[]],
303*504c13e8SAndreas Gohr            ['listu_open',[]],
304*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
305*504c13e8SAndreas Gohr            ['listcontent_open',[]],
306*504c13e8SAndreas Gohr            ['cdata',["A"]],
307*504c13e8SAndreas Gohr            ['linebreak',[]],
308*504c13e8SAndreas Gohr            ['cdata',["D"]],
309*504c13e8SAndreas Gohr            ['listcontent_close',[]],
310*504c13e8SAndreas Gohr            ['listu_open',[]],
311*504c13e8SAndreas Gohr            ['listitem_open',[2]],
312*504c13e8SAndreas Gohr            ['listcontent_open',[]],
313*504c13e8SAndreas Gohr            ['cdata',[' B']],
314*504c13e8SAndreas Gohr            ['listcontent_close',[]],
315*504c13e8SAndreas Gohr            ['listitem_close',[]],
316*504c13e8SAndreas Gohr            ['listu_close',[]],
317*504c13e8SAndreas Gohr            ['listitem_close',[]],
318*504c13e8SAndreas Gohr            ['listitem_open',[1]],
319*504c13e8SAndreas Gohr            ['listcontent_open',[]],
320*504c13e8SAndreas Gohr            ['cdata',[' C']],
321*504c13e8SAndreas Gohr            ['listcontent_close',[]],
322*504c13e8SAndreas Gohr            ['listitem_close',[]],
323*504c13e8SAndreas Gohr            ['listu_close',[]],
324*504c13e8SAndreas Gohr            ['document_end',[]],
325*504c13e8SAndreas Gohr        ];
326*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
327*504c13e8SAndreas Gohr    }
328*504c13e8SAndreas Gohr
329*504c13e8SAndreas Gohr    function testUnorderedListLinebreak2() {
330*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
331*504c13e8SAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
332*504c13e8SAndreas Gohr        $this->P->parse('
333*504c13e8SAndreas Gohr  *A\\\\
334*504c13e8SAndreas Gohr  * B
335*504c13e8SAndreas Gohr');
336*504c13e8SAndreas Gohr        $calls = [
337*504c13e8SAndreas Gohr            ['document_start',[]],
338*504c13e8SAndreas Gohr            ['listu_open',[]],
339*504c13e8SAndreas Gohr            ['listitem_open',[1]],
340*504c13e8SAndreas Gohr            ['listcontent_open',[]],
341*504c13e8SAndreas Gohr            ['cdata',["A"]],
342*504c13e8SAndreas Gohr            ['linebreak',[]],
343*504c13e8SAndreas Gohr            ['listcontent_close',[]],
344*504c13e8SAndreas Gohr            ['listitem_close',[]],
345*504c13e8SAndreas Gohr            ['listitem_open',[1]],
346*504c13e8SAndreas Gohr            ['listcontent_open',[]],
347*504c13e8SAndreas Gohr            ['cdata',[' B']],
348*504c13e8SAndreas Gohr            ['listcontent_close',[]],
349*504c13e8SAndreas Gohr            ['listitem_close',[]],
350*504c13e8SAndreas Gohr            ['listu_close',[]],
351*504c13e8SAndreas Gohr            ['document_end',[]],
352*504c13e8SAndreas Gohr        ];
353*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
354*504c13e8SAndreas Gohr    }
355*504c13e8SAndreas Gohr
356*504c13e8SAndreas Gohr    function testUnorderedListFootnote() {
357*504c13e8SAndreas Gohr        $this->P->addMode('listblock',new Listblock());
358*504c13e8SAndreas Gohr        $this->P->addMode('footnote',new Footnote());
359*504c13e8SAndreas Gohr        $this->P->parse("\n  *((A))\n    *(( B\n  * C )) \n\n");
360*504c13e8SAndreas Gohr        $calls = [
361*504c13e8SAndreas Gohr            ['document_start',[]],
362*504c13e8SAndreas Gohr            ['listu_open',[]],
363*504c13e8SAndreas Gohr            ['listitem_open',[1,Lists::NODE]],
364*504c13e8SAndreas Gohr            ['listcontent_open',[]],
365*504c13e8SAndreas Gohr            ['nest', [ [
366*504c13e8SAndreas Gohr                ['footnote_open',[]],
367*504c13e8SAndreas Gohr                ['cdata',["A"]],
368*504c13e8SAndreas Gohr                ['footnote_close',[]]
369*504c13e8SAndreas Gohr            ]]],
370*504c13e8SAndreas Gohr            ['listcontent_close',[]],
371*504c13e8SAndreas Gohr            ['listu_open',[]],
372*504c13e8SAndreas Gohr            ['listitem_open',[2]],
373*504c13e8SAndreas Gohr            ['listcontent_open',[]],
374*504c13e8SAndreas Gohr            ['nest', [ [
375*504c13e8SAndreas Gohr                ['footnote_open',[]],
376*504c13e8SAndreas Gohr                ['cdata',[" B"]],
377*504c13e8SAndreas Gohr                ['listu_open',[]],
378*504c13e8SAndreas Gohr                ['listitem_open',[1]],
379*504c13e8SAndreas Gohr                ['listcontent_open',[]],
380*504c13e8SAndreas Gohr                ['cdata',[" C )) "]],
381*504c13e8SAndreas Gohr                ['listcontent_close',[]],
382*504c13e8SAndreas Gohr                ['listitem_close',[]],
383*504c13e8SAndreas Gohr                ['listu_close',[]],
384*504c13e8SAndreas Gohr                ['cdata',["\n\n"]],
385*504c13e8SAndreas Gohr                ['footnote_close',[]]
386*504c13e8SAndreas Gohr            ]]],
387*504c13e8SAndreas Gohr            ['listcontent_close',[]],
388*504c13e8SAndreas Gohr            ['listitem_close',[]],
389*504c13e8SAndreas Gohr            ['listu_close',[]],
390*504c13e8SAndreas Gohr            ['listitem_close',[]],
391*504c13e8SAndreas Gohr            ['listu_close',[]],
392*504c13e8SAndreas Gohr            ['document_end',[]]
393*504c13e8SAndreas Gohr        ];
394*504c13e8SAndreas Gohr
395*504c13e8SAndreas Gohr        $this->assertCalls($calls, $this->H->calls);
396*504c13e8SAndreas Gohr    }
397*504c13e8SAndreas Gohr}
398