xref: /dokuwiki/_test/tests/inc/parser/parser_quotes.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
1*f8369d7dSTobias Sarnowski<?php
2*f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
3*f8369d7dSTobias Sarnowski
4*f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Quotes extends TestOfDoku_Parser {
5*f8369d7dSTobias Sarnowski
6*f8369d7dSTobias Sarnowski    function setup() {
7*f8369d7dSTobias Sarnowski        parent::setup();
8*f8369d7dSTobias Sarnowski        global $conf;
9*f8369d7dSTobias Sarnowski        $conf['typography'] = 2;
10*f8369d7dSTobias Sarnowski    }
11*f8369d7dSTobias Sarnowski
12*f8369d7dSTobias Sarnowski    function testSingleQuoteOpening() {
13*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
14*f8369d7dSTobias Sarnowski        $this->P->parse("Foo 'hello Bar");
15*f8369d7dSTobias Sarnowski
16*f8369d7dSTobias Sarnowski        $calls = array (
17*f8369d7dSTobias Sarnowski            array('document_start',array()),
18*f8369d7dSTobias Sarnowski            array('p_open',array()),
19*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
20*f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
21*f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
22*f8369d7dSTobias Sarnowski            array('p_close',array()),
23*f8369d7dSTobias Sarnowski            array('document_end',array()),
24*f8369d7dSTobias Sarnowski        );
25*f8369d7dSTobias Sarnowski
26*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
27*f8369d7dSTobias Sarnowski    }
28*f8369d7dSTobias Sarnowski
29*f8369d7dSTobias Sarnowski    function testSingleQuoteOpeningSpecial() {
30*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
31*f8369d7dSTobias Sarnowski        $this->P->parse("Foo said:'hello Bar");
32*f8369d7dSTobias Sarnowski
33*f8369d7dSTobias Sarnowski        $calls = array (
34*f8369d7dSTobias Sarnowski            array('document_start',array()),
35*f8369d7dSTobias Sarnowski            array('p_open',array()),
36*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo said:')),
37*f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
38*f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
39*f8369d7dSTobias Sarnowski            array('p_close',array()),
40*f8369d7dSTobias Sarnowski            array('document_end',array()),
41*f8369d7dSTobias Sarnowski        );
42*f8369d7dSTobias Sarnowski
43*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
44*f8369d7dSTobias Sarnowski    }
45*f8369d7dSTobias Sarnowski
46*f8369d7dSTobias Sarnowski    function testSingleQuoteClosing() {
47*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
48*f8369d7dSTobias Sarnowski        $this->P->parse("Foo hello' Bar");
49*f8369d7dSTobias Sarnowski
50*f8369d7dSTobias Sarnowski        $calls = array (
51*f8369d7dSTobias Sarnowski            array('document_start',array()),
52*f8369d7dSTobias Sarnowski            array('p_open',array()),
53*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
54*f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
55*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
56*f8369d7dSTobias Sarnowski            array('p_close',array()),
57*f8369d7dSTobias Sarnowski            array('document_end',array()),
58*f8369d7dSTobias Sarnowski        );
59*f8369d7dSTobias Sarnowski
60*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
61*f8369d7dSTobias Sarnowski    }
62*f8369d7dSTobias Sarnowski
63*f8369d7dSTobias Sarnowski    function testSingleQuoteClosingSpecial() {
64*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
65*f8369d7dSTobias Sarnowski        $this->P->parse("Foo hello') Bar");
66*f8369d7dSTobias Sarnowski
67*f8369d7dSTobias Sarnowski        $calls = array (
68*f8369d7dSTobias Sarnowski            array('document_start',array()),
69*f8369d7dSTobias Sarnowski            array('p_open',array()),
70*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
71*f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
72*f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
73*f8369d7dSTobias Sarnowski            array('p_close',array()),
74*f8369d7dSTobias Sarnowski            array('document_end',array()),
75*f8369d7dSTobias Sarnowski        );
76*f8369d7dSTobias Sarnowski
77*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
78*f8369d7dSTobias Sarnowski    }
79*f8369d7dSTobias Sarnowski
80*f8369d7dSTobias Sarnowski    function testSingleQuotes() {
81*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
82*f8369d7dSTobias Sarnowski        $this->P->parse("Foo 'hello' Bar");
83*f8369d7dSTobias Sarnowski
84*f8369d7dSTobias Sarnowski        $calls = array (
85*f8369d7dSTobias Sarnowski            array('document_start',array()),
86*f8369d7dSTobias Sarnowski            array('p_open',array()),
87*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
88*f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
89*f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
90*f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
91*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
92*f8369d7dSTobias Sarnowski            array('p_close',array()),
93*f8369d7dSTobias Sarnowski            array('document_end',array()),
94*f8369d7dSTobias Sarnowski        );
95*f8369d7dSTobias Sarnowski
96*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
97*f8369d7dSTobias Sarnowski    }
98*f8369d7dSTobias Sarnowski
99*f8369d7dSTobias Sarnowski    function testApostrophe() {
100*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
101*f8369d7dSTobias Sarnowski        $this->P->parse("hey it's fine weather today");
102*f8369d7dSTobias Sarnowski
103*f8369d7dSTobias Sarnowski        $calls = array (
104*f8369d7dSTobias Sarnowski            array('document_start',array()),
105*f8369d7dSTobias Sarnowski            array('p_open',array()),
106*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'hey it')),
107*f8369d7dSTobias Sarnowski            array('apostrophe',array()),
108*f8369d7dSTobias Sarnowski            array('cdata',array('s fine weather today')),
109*f8369d7dSTobias Sarnowski            array('p_close',array()),
110*f8369d7dSTobias Sarnowski            array('document_end',array()),
111*f8369d7dSTobias Sarnowski        );
112*f8369d7dSTobias Sarnowski
113*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
114*f8369d7dSTobias Sarnowski    }
115*f8369d7dSTobias Sarnowski
116*f8369d7dSTobias Sarnowski
117*f8369d7dSTobias Sarnowski    function testSingleQuotesSpecial() {
118*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
119*f8369d7dSTobias Sarnowski        $this->P->parse("Foo ('hello') Bar");
120*f8369d7dSTobias Sarnowski
121*f8369d7dSTobias Sarnowski        $calls = array (
122*f8369d7dSTobias Sarnowski            array('document_start',array()),
123*f8369d7dSTobias Sarnowski            array('p_open',array()),
124*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo (')),
125*f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
126*f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
127*f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
128*f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
129*f8369d7dSTobias Sarnowski            array('p_close',array()),
130*f8369d7dSTobias Sarnowski            array('document_end',array()),
131*f8369d7dSTobias Sarnowski        );
132*f8369d7dSTobias Sarnowski
133*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
134*f8369d7dSTobias Sarnowski    }
135*f8369d7dSTobias Sarnowski
136*f8369d7dSTobias Sarnowski    function testDoubleQuoteOpening() {
137*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
138*f8369d7dSTobias Sarnowski        $this->P->parse('Foo "hello Bar');
139*f8369d7dSTobias Sarnowski
140*f8369d7dSTobias Sarnowski        $calls = array (
141*f8369d7dSTobias Sarnowski            array('document_start',array()),
142*f8369d7dSTobias Sarnowski            array('p_open',array()),
143*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
144*f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
145*f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
146*f8369d7dSTobias Sarnowski            array('p_close',array()),
147*f8369d7dSTobias Sarnowski            array('document_end',array()),
148*f8369d7dSTobias Sarnowski        );
149*f8369d7dSTobias Sarnowski
150*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
151*f8369d7dSTobias Sarnowski    }
152*f8369d7dSTobias Sarnowski
153*f8369d7dSTobias Sarnowski    function testDoubleQuoteOpeningSpecial() {
154*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
155*f8369d7dSTobias Sarnowski        $this->P->parse('Foo said:"hello Bar');
156*f8369d7dSTobias Sarnowski
157*f8369d7dSTobias Sarnowski        $calls = array (
158*f8369d7dSTobias Sarnowski            array('document_start',array()),
159*f8369d7dSTobias Sarnowski            array('p_open',array()),
160*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo said:')),
161*f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
162*f8369d7dSTobias Sarnowski            array('cdata',array('hello Bar')),
163*f8369d7dSTobias Sarnowski            array('p_close',array()),
164*f8369d7dSTobias Sarnowski            array('document_end',array()),
165*f8369d7dSTobias Sarnowski        );
166*f8369d7dSTobias Sarnowski
167*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
168*f8369d7dSTobias Sarnowski    }
169*f8369d7dSTobias Sarnowski
170*f8369d7dSTobias Sarnowski    function testDoubleQuoteClosing() {
171*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
172*f8369d7dSTobias Sarnowski        $this->P->parse('Foo hello" Bar');
173*f8369d7dSTobias Sarnowski
174*f8369d7dSTobias Sarnowski        $calls = array (
175*f8369d7dSTobias Sarnowski            array('document_start',array()),
176*f8369d7dSTobias Sarnowski            array('p_open',array()),
177*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
178*f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
179*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
180*f8369d7dSTobias Sarnowski            array('p_close',array()),
181*f8369d7dSTobias Sarnowski            array('document_end',array()),
182*f8369d7dSTobias Sarnowski        );
183*f8369d7dSTobias Sarnowski
184*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
185*f8369d7dSTobias Sarnowski    }
186*f8369d7dSTobias Sarnowski
187*f8369d7dSTobias Sarnowski    function testDoubleQuoteClosingSpecial() {
188*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
189*f8369d7dSTobias Sarnowski        $this->P->parse('Foo hello") Bar');
190*f8369d7dSTobias Sarnowski
191*f8369d7dSTobias Sarnowski        $calls = array (
192*f8369d7dSTobias Sarnowski            array('document_start',array()),
193*f8369d7dSTobias Sarnowski            array('p_open',array()),
194*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo hello')),
195*f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
196*f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
197*f8369d7dSTobias Sarnowski            array('p_close',array()),
198*f8369d7dSTobias Sarnowski            array('document_end',array()),
199*f8369d7dSTobias Sarnowski        );
200*f8369d7dSTobias Sarnowski
201*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
202*f8369d7dSTobias Sarnowski    }
203*f8369d7dSTobias Sarnowski
204*f8369d7dSTobias Sarnowski    function testDoubleQuotes() {
205*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
206*f8369d7dSTobias Sarnowski        $this->P->parse('Foo "hello" Bar');
207*f8369d7dSTobias Sarnowski
208*f8369d7dSTobias Sarnowski        $calls = array (
209*f8369d7dSTobias Sarnowski            array('document_start',array()),
210*f8369d7dSTobias Sarnowski            array('p_open',array()),
211*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo ')),
212*f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
213*f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
214*f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
215*f8369d7dSTobias Sarnowski            array('cdata',array(' Bar')),
216*f8369d7dSTobias Sarnowski            array('p_close',array()),
217*f8369d7dSTobias Sarnowski            array('document_end',array()),
218*f8369d7dSTobias Sarnowski        );
219*f8369d7dSTobias Sarnowski
220*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
221*f8369d7dSTobias Sarnowski    }
222*f8369d7dSTobias Sarnowski
223*f8369d7dSTobias Sarnowski    function testDoubleQuotesSpecial() {
224*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
225*f8369d7dSTobias Sarnowski        $this->P->parse('Foo ("hello") Bar');
226*f8369d7dSTobias Sarnowski
227*f8369d7dSTobias Sarnowski        $calls = array (
228*f8369d7dSTobias Sarnowski            array('document_start',array()),
229*f8369d7dSTobias Sarnowski            array('p_open',array()),
230*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo (')),
231*f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
232*f8369d7dSTobias Sarnowski            array('cdata',array('hello')),
233*f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
234*f8369d7dSTobias Sarnowski            array('cdata',array(') Bar')),
235*f8369d7dSTobias Sarnowski            array('p_close',array()),
236*f8369d7dSTobias Sarnowski            array('document_end',array()),
237*f8369d7dSTobias Sarnowski        );
238*f8369d7dSTobias Sarnowski
239*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
240*f8369d7dSTobias Sarnowski    }
241*f8369d7dSTobias Sarnowski
242*f8369d7dSTobias Sarnowski    function testAllQuotes() {
243*f8369d7dSTobias Sarnowski        $this->P->addMode('quotes',new Doku_Parser_Mode_Quotes());
244*f8369d7dSTobias Sarnowski        $this->P->parse('There was written "He thought \'It\'s a man\'s world\'".');
245*f8369d7dSTobias Sarnowski
246*f8369d7dSTobias Sarnowski        $calls = array (
247*f8369d7dSTobias Sarnowski            array('document_start',array()),
248*f8369d7dSTobias Sarnowski            array('p_open',array()),
249*f8369d7dSTobias Sarnowski            array('cdata',array("\n".'There was written ')),
250*f8369d7dSTobias Sarnowski            array('doublequoteopening',array()),
251*f8369d7dSTobias Sarnowski            array('cdata',array('He thought ')),
252*f8369d7dSTobias Sarnowski            array('singlequoteopening',array()),
253*f8369d7dSTobias Sarnowski            array('cdata',array('It')),
254*f8369d7dSTobias Sarnowski            array('apostrophe',array()),
255*f8369d7dSTobias Sarnowski            array('cdata',array('s a man')),
256*f8369d7dSTobias Sarnowski            array('apostrophe',array()),
257*f8369d7dSTobias Sarnowski            array('cdata',array('s world')),
258*f8369d7dSTobias Sarnowski            array('singlequoteclosing',array()),
259*f8369d7dSTobias Sarnowski            array('doublequoteclosing',array()),
260*f8369d7dSTobias Sarnowski            array('cdata',array(".")),
261*f8369d7dSTobias Sarnowski            array('p_close',array()),
262*f8369d7dSTobias Sarnowski            array('document_end',array()),
263*f8369d7dSTobias Sarnowski        );
264*f8369d7dSTobias Sarnowski
265*f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
266*f8369d7dSTobias Sarnowski    }
267*f8369d7dSTobias Sarnowski
268*f8369d7dSTobias Sarnowski}
269*f8369d7dSTobias Sarnowski
270