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