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