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