xref: /dokuwiki/_test/tests/inc/parser/parser_quotes.test.php (revision 36dc94bb8b05aaaff6fdcf55dd6af80ca30d22b1)
1f8369d7dSTobias Sarnowski<?php
2*36dc94bbSAndreas Gohr
3*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Quotes;
4*36dc94bbSAndreas Gohr
5f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
6f8369d7dSTobias Sarnowski
7f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
8f8369d7dSTobias Sarnowski
9ff576d93SDominik Eckelmann    function setUp() {
10ff576d93SDominik Eckelmann        parent::setUp();
11f8369d7dSTobias Sarnowski        global $conf;
12f8369d7dSTobias Sarnowski        $conf['typography'] = 2;
13f8369d7dSTobias Sarnowski    }
14f8369d7dSTobias Sarnowski
15f8369d7dSTobias Sarnowski    function testSingleQuoteOpening() {
16e950d12fSChristopher Smith        $raw = "Foo 'hello Bar";
17*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
18e950d12fSChristopher Smith        $this->P->parse($raw);
19f8369d7dSTobias Sarnowski
20f8369d7dSTobias Sarnowski        $calls = array (
21f8369d7dSTobias Sarnowski            array('document_start',array()),
22f8369d7dSTobias Sarnowski            array('p_open',array()),
23f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
24f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
25f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
26f8369d7dSTobias Sarnowski            array('p_close',array()),
27f8369d7dSTobias Sarnowski            array('document_end',array()),
28f8369d7dSTobias Sarnowski        );
29f8369d7dSTobias Sarnowski
30e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
31f8369d7dSTobias Sarnowski    }
32f8369d7dSTobias Sarnowski
33f8369d7dSTobias Sarnowski    function testSingleQuoteOpeningSpecial() {
34e950d12fSChristopher Smith        $raw = "Foo said:'hello Bar";
35*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
36e950d12fSChristopher Smith        $this->P->parse($raw);
37f8369d7dSTobias Sarnowski
38f8369d7dSTobias Sarnowski        $calls = array (
39f8369d7dSTobias Sarnowski            array('document_start',array()),
40f8369d7dSTobias Sarnowski            array('p_open',array()),
41f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo said:')),
42f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
43f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
44f8369d7dSTobias Sarnowski            array('p_close',array()),
45f8369d7dSTobias Sarnowski            array('document_end',array()),
46f8369d7dSTobias Sarnowski        );
47f8369d7dSTobias Sarnowski
48e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
49f8369d7dSTobias Sarnowski    }
50f8369d7dSTobias Sarnowski
51f8369d7dSTobias Sarnowski    function testSingleQuoteClosing() {
52e950d12fSChristopher Smith        $raw = "Foo hello' Bar";
53*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
54e950d12fSChristopher Smith        $this->P->parse($raw);
55f8369d7dSTobias Sarnowski
56f8369d7dSTobias Sarnowski        $calls = array (
57f8369d7dSTobias Sarnowski            array('document_start',array()),
58f8369d7dSTobias Sarnowski            array('p_open',array()),
59f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
60f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
61f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
62f8369d7dSTobias Sarnowski            array('p_close',array()),
63f8369d7dSTobias Sarnowski            array('document_end',array()),
64f8369d7dSTobias Sarnowski        );
65f8369d7dSTobias Sarnowski
66e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
67f8369d7dSTobias Sarnowski    }
68f8369d7dSTobias Sarnowski
69f8369d7dSTobias Sarnowski    function testSingleQuoteClosingSpecial() {
70e950d12fSChristopher Smith        $raw = "Foo hello') Bar";
71*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
72e950d12fSChristopher Smith        $this->P->parse($raw);
73f8369d7dSTobias Sarnowski
74f8369d7dSTobias Sarnowski        $calls = array (
75f8369d7dSTobias Sarnowski            array('document_start',array()),
76f8369d7dSTobias Sarnowski            array('p_open',array()),
77f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
78f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
79f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
80f8369d7dSTobias Sarnowski            array('p_close',array()),
81f8369d7dSTobias Sarnowski            array('document_end',array()),
82f8369d7dSTobias Sarnowski        );
83f8369d7dSTobias Sarnowski
84e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
85f8369d7dSTobias Sarnowski    }
86f8369d7dSTobias Sarnowski
87f8369d7dSTobias Sarnowski    function testSingleQuotes() {
88e950d12fSChristopher Smith        $raw = "Foo 'hello' Bar";
89*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
90e950d12fSChristopher Smith        $this->P->parse($raw);
91f8369d7dSTobias Sarnowski
92f8369d7dSTobias Sarnowski        $calls = array (
93f8369d7dSTobias Sarnowski            array('document_start',array()),
94f8369d7dSTobias Sarnowski            array('p_open',array()),
95f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
96f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
97f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
98f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
99f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
100f8369d7dSTobias Sarnowski            array('p_close',array()),
101f8369d7dSTobias Sarnowski            array('document_end',array()),
102f8369d7dSTobias Sarnowski        );
103f8369d7dSTobias Sarnowski
104e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
105f8369d7dSTobias Sarnowski    }
106f8369d7dSTobias Sarnowski
107f8369d7dSTobias Sarnowski    function testApostrophe() {
108e950d12fSChristopher Smith        $raw = "hey it's fine weather today";
109*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
110e950d12fSChristopher Smith        $this->P->parse($raw);
111f8369d7dSTobias Sarnowski
112f8369d7dSTobias Sarnowski        $calls = array (
113f8369d7dSTobias Sarnowski            array('document_start',array()),
114f8369d7dSTobias Sarnowski            array('p_open',array()),
115f8369d7dSTobias Sarnowski            array('cdata',array("\n".'hey it')),
116f8369d7dSTobias Sarnowski            array('apostrophe',array()),
117f8369d7dSTobias Sarnowski            array('cdata',array('s fine weather today')),
118f8369d7dSTobias Sarnowski            array('p_close',array()),
119f8369d7dSTobias Sarnowski            array('document_end',array()),
120f8369d7dSTobias Sarnowski        );
121f8369d7dSTobias Sarnowski
122e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
123f8369d7dSTobias Sarnowski    }
124f8369d7dSTobias Sarnowski
125f8369d7dSTobias Sarnowski
126f8369d7dSTobias Sarnowski    function testSingleQuotesSpecial() {
127e950d12fSChristopher Smith        $raw = "Foo ('hello') Bar";
128*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
129e950d12fSChristopher Smith        $this->P->parse($raw);
130f8369d7dSTobias Sarnowski
131f8369d7dSTobias Sarnowski        $calls = array (
132f8369d7dSTobias Sarnowski            array('document_start',array()),
133f8369d7dSTobias Sarnowski            array('p_open',array()),
134f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo (')),
135f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
136f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
137f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
138f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
139f8369d7dSTobias Sarnowski            array('p_close',array()),
140f8369d7dSTobias Sarnowski            array('document_end',array()),
141f8369d7dSTobias Sarnowski        );
142f8369d7dSTobias Sarnowski
143e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
144f8369d7dSTobias Sarnowski    }
145f8369d7dSTobias Sarnowski
146f8369d7dSTobias Sarnowski    function testDoubleQuoteOpening() {
147e950d12fSChristopher Smith        $raw = 'Foo "hello Bar';
148*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
149e950d12fSChristopher Smith        $this->P->parse($raw);
150f8369d7dSTobias Sarnowski
151f8369d7dSTobias Sarnowski        $calls = array (
152f8369d7dSTobias Sarnowski            array('document_start',array()),
153f8369d7dSTobias Sarnowski            array('p_open',array()),
154f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
155f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
156f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
157f8369d7dSTobias Sarnowski            array('p_close',array()),
158f8369d7dSTobias Sarnowski            array('document_end',array()),
159f8369d7dSTobias Sarnowski        );
160f8369d7dSTobias Sarnowski
161e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
162f8369d7dSTobias Sarnowski    }
163f8369d7dSTobias Sarnowski
164f8369d7dSTobias Sarnowski    function testDoubleQuoteOpeningSpecial() {
165e950d12fSChristopher Smith        $raw = 'Foo said:"hello Bar';
166*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
167e950d12fSChristopher Smith        $this->P->parse($raw);
168f8369d7dSTobias Sarnowski
169f8369d7dSTobias Sarnowski        $calls = array (
170f8369d7dSTobias Sarnowski            array('document_start',array()),
171f8369d7dSTobias Sarnowski            array('p_open',array()),
172f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo said:')),
173f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
174f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
175f8369d7dSTobias Sarnowski            array('p_close',array()),
176f8369d7dSTobias Sarnowski            array('document_end',array()),
177f8369d7dSTobias Sarnowski        );
178f8369d7dSTobias Sarnowski
179e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
180f8369d7dSTobias Sarnowski    }
181f8369d7dSTobias Sarnowski
182f8369d7dSTobias Sarnowski    function testDoubleQuoteClosing() {
183e950d12fSChristopher Smith        $raw = 'Foo hello" Bar';
184*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
185e950d12fSChristopher Smith        $this->H->status['doublequote'] = 1;
186e950d12fSChristopher Smith        $this->P->parse($raw);
187f8369d7dSTobias Sarnowski
188f8369d7dSTobias Sarnowski        $calls = array (
189f8369d7dSTobias Sarnowski            array('document_start',array()),
190f8369d7dSTobias Sarnowski            array('p_open',array()),
191f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
192f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
193f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
194f8369d7dSTobias Sarnowski            array('p_close',array()),
195f8369d7dSTobias Sarnowski            array('document_end',array()),
196f8369d7dSTobias Sarnowski        );
197f8369d7dSTobias Sarnowski
198e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
199f8369d7dSTobias Sarnowski    }
200f8369d7dSTobias Sarnowski
201f8369d7dSTobias Sarnowski    function testDoubleQuoteClosingSpecial() {
202e950d12fSChristopher Smith        $raw = 'Foo hello") Bar';
203*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
204e950d12fSChristopher Smith        $this->H->status['doublequote'] = 1;
205e950d12fSChristopher Smith        $this->P->parse($raw);
206f8369d7dSTobias Sarnowski
207f8369d7dSTobias Sarnowski        $calls = array (
208f8369d7dSTobias Sarnowski            array('document_start',array()),
209f8369d7dSTobias Sarnowski            array('p_open',array()),
210f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
211f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
212f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
213f8369d7dSTobias Sarnowski            array('p_close',array()),
214f8369d7dSTobias Sarnowski            array('document_end',array()),
215f8369d7dSTobias Sarnowski        );
216f8369d7dSTobias Sarnowski
217e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
218e950d12fSChristopher Smith    }
219e950d12fSChristopher Smith    function testDoubleQuoteClosingSpecial2() {
220e950d12fSChristopher Smith        $raw = 'Foo hello") Bar';
221*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
222e950d12fSChristopher Smith        $this->H->status['doublequote'] = 0;
223e950d12fSChristopher Smith        $this->P->parse($raw);
224e950d12fSChristopher Smith
225e950d12fSChristopher Smith        $calls = array (
226e950d12fSChristopher Smith            array('document_start',array()),
227e950d12fSChristopher Smith            array('p_open',array()),
228e950d12fSChristopher Smith            array('cdata',array("\n".'Foo hello')),
229e950d12fSChristopher Smith            array('doublequoteopening',array()),
230e950d12fSChristopher Smith            array('cdata',array(') Bar')),
231e950d12fSChristopher Smith            array('p_close',array()),
232e950d12fSChristopher Smith            array('document_end',array()),
233e950d12fSChristopher Smith        );
234e950d12fSChristopher Smith
235e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
236f8369d7dSTobias Sarnowski    }
237f8369d7dSTobias Sarnowski
238f8369d7dSTobias Sarnowski    function testDoubleQuotes() {
239e950d12fSChristopher Smith        $raw = 'Foo "hello" Bar';
240*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
241e950d12fSChristopher Smith        $this->P->parse($raw);
242f8369d7dSTobias Sarnowski
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('doublequoteopening',array()),
248f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
249f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
250f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
251f8369d7dSTobias Sarnowski            array('p_close',array()),
252f8369d7dSTobias Sarnowski            array('document_end',array()),
253f8369d7dSTobias Sarnowski        );
254f8369d7dSTobias Sarnowski
255e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
256f8369d7dSTobias Sarnowski    }
257f8369d7dSTobias Sarnowski
258f8369d7dSTobias Sarnowski    function testDoubleQuotesSpecial() {
259e950d12fSChristopher Smith        $raw = 'Foo ("hello") Bar';
260*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
261e950d12fSChristopher Smith        $this->P->parse($raw);
262f8369d7dSTobias Sarnowski
263f8369d7dSTobias Sarnowski        $calls = array (
264f8369d7dSTobias Sarnowski            array('document_start',array()),
265f8369d7dSTobias Sarnowski            array('p_open',array()),
266f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo (')),
267f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
268f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
269f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
270f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
271f8369d7dSTobias Sarnowski            array('p_close',array()),
272f8369d7dSTobias Sarnowski            array('document_end',array()),
273f8369d7dSTobias Sarnowski        );
274f8369d7dSTobias Sarnowski
275e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls, 'wikitext => '.$raw);
276f8369d7dSTobias Sarnowski    }
277f8369d7dSTobias Sarnowski
278e950d12fSChristopher Smith    function testDoubleQuotesEnclosingBrackets() {
279e950d12fSChristopher Smith        $raw = 'Foo "{hello}" Bar';
280*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
281e950d12fSChristopher Smith        $this->P->parse($raw);
282e950d12fSChristopher Smith
283e950d12fSChristopher Smith        $calls = array (
284e950d12fSChristopher Smith            array('document_start',array()),
285e950d12fSChristopher Smith            array('p_open',array()),
286e950d12fSChristopher Smith            array('cdata',array("\n".'Foo ')),
287e950d12fSChristopher Smith            array('doublequoteopening',array()),
288e950d12fSChristopher Smith            array('cdata',array('{hello}')),
289e950d12fSChristopher Smith            array('doublequoteclosing',array()),
290e950d12fSChristopher Smith            array('cdata',array(' Bar')),
291e950d12fSChristopher Smith            array('p_close',array()),
292e950d12fSChristopher Smith            array('document_end',array()),
293e950d12fSChristopher Smith        );
294e950d12fSChristopher Smith
295e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls,'wikitext - '.$raw);
296e950d12fSChristopher Smith    }
297e950d12fSChristopher Smith
298e950d12fSChristopher Smith    function testDoubleQuotesEnclosingLink() {
299e950d12fSChristopher Smith        $raw = 'Foo "[[www.domain.com]]" Bar';
300*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
301e950d12fSChristopher Smith        $this->P->parse($raw);
302e950d12fSChristopher Smith
303e950d12fSChristopher Smith        $calls = array (
304e950d12fSChristopher Smith            array('document_start',array()),
305e950d12fSChristopher Smith            array('p_open',array()),
306e950d12fSChristopher Smith            array('cdata',array("\n".'Foo ')),
307e950d12fSChristopher Smith            array('doublequoteopening',array()),
308e950d12fSChristopher Smith            array('cdata',array('[[www.domain.com]]')),
309e950d12fSChristopher Smith            array('doublequoteclosing',array()),
310e950d12fSChristopher Smith            array('cdata',array(' Bar')),
311e950d12fSChristopher Smith            array('p_close',array()),
312e950d12fSChristopher Smith            array('document_end',array()),
313e950d12fSChristopher Smith        );
314e950d12fSChristopher Smith
315e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls,'wikitext => '.$raw);
316e950d12fSChristopher Smith    }
317e950d12fSChristopher Smith
318e950d12fSChristopher Smith
319e950d12fSChristopher Smith    function testAllQuotes() {
320e950d12fSChristopher Smith        $raw = 'There was written "He thought \'It\'s a man\'s world\'".';
321*36dc94bbSAndreas Gohr        $this->P->addMode('quotes',new Quotes());
322e950d12fSChristopher Smith        $this->P->parse($raw);
323f8369d7dSTobias Sarnowski
324f8369d7dSTobias Sarnowski        $calls = array (
325f8369d7dSTobias Sarnowski            array('document_start',array()),
326f8369d7dSTobias Sarnowski            array('p_open',array()),
327f8369d7dSTobias Sarnowski            array('cdata',array("\n".'There was written ')),
328f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
329f8369d7dSTobias Sarnowski            array('cdata',array('He thought ')),
330f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
331f8369d7dSTobias Sarnowski            array('cdata',array('It')),
332f8369d7dSTobias Sarnowski            array('apostrophe',array()),
333f8369d7dSTobias Sarnowski            array('cdata',array('s a man')),
334f8369d7dSTobias Sarnowski            array('apostrophe',array()),
335f8369d7dSTobias Sarnowski            array('cdata',array('s world')),
336f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
337f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
338f8369d7dSTobias Sarnowski            array('cdata',array(".")),
339f8369d7dSTobias Sarnowski            array('p_close',array()),
340f8369d7dSTobias Sarnowski            array('document_end',array()),
341f8369d7dSTobias Sarnowski        );
342f8369d7dSTobias Sarnowski
343e950d12fSChristopher Smith        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls,'wikitext => '.$raw);
344f8369d7dSTobias Sarnowski    }
345f8369d7dSTobias Sarnowski
346f8369d7dSTobias Sarnowski}
347f8369d7dSTobias Sarnowski
348