1f8369d7dSTobias Sarnowski<?php 236dc94bbSAndreas Gohr 3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Acronym; 4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Formatting; 5*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Header; 6*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Internallink; 7*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Table; 836dc94bbSAndreas Gohr 9f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 10f8369d7dSTobias Sarnowski 11f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_i18n extends TestOfDoku_Parser { 12f8369d7dSTobias Sarnowski 13f8369d7dSTobias Sarnowski function testFormatting() { 14f8369d7dSTobias Sarnowski $formats = array ( 15f8369d7dSTobias Sarnowski 'strong', 'emphasis', 'underline', 'monospace', 16f8369d7dSTobias Sarnowski 'subscript', 'superscript', 'deleted', 17f8369d7dSTobias Sarnowski ); 18f8369d7dSTobias Sarnowski foreach ( $formats as $format ) { 1936dc94bbSAndreas Gohr $this->P->addMode($format,new Formatting($format)); 20f8369d7dSTobias Sarnowski } 21f8369d7dSTobias Sarnowski $this->P->parse("I**ñ**t__ë__r//n//â<sup>t</sup>i<sub>ô</sub>n''à''liz<del>æ</del>tiøn"); 22f8369d7dSTobias Sarnowski $calls = array ( 23f8369d7dSTobias Sarnowski array('document_start',array()), 24f8369d7dSTobias Sarnowski array('p_open',array()), 25f8369d7dSTobias Sarnowski array('cdata',array("\nI")), 26f8369d7dSTobias Sarnowski array('strong_open',array()), 27f8369d7dSTobias Sarnowski array('cdata',array('ñ')), 28f8369d7dSTobias Sarnowski array('strong_close',array()), 29f8369d7dSTobias Sarnowski array('cdata',array('t')), 30f8369d7dSTobias Sarnowski array('underline_open',array()), 31f8369d7dSTobias Sarnowski array('cdata',array('ë')), 32f8369d7dSTobias Sarnowski array('underline_close',array()), 33f8369d7dSTobias Sarnowski array('cdata',array('r')), 34f8369d7dSTobias Sarnowski array('emphasis_open',array()), 35f8369d7dSTobias Sarnowski array('cdata',array('n')), 36f8369d7dSTobias Sarnowski array('emphasis_close',array()), 37f8369d7dSTobias Sarnowski array('cdata',array('â')), 38f8369d7dSTobias Sarnowski array('superscript_open',array()), 39f8369d7dSTobias Sarnowski array('cdata',array('t')), 40f8369d7dSTobias Sarnowski array('superscript_close',array()), 41f8369d7dSTobias Sarnowski array('cdata',array('i')), 42f8369d7dSTobias Sarnowski array('subscript_open',array()), 43f8369d7dSTobias Sarnowski array('cdata',array('ô')), 44f8369d7dSTobias Sarnowski array('subscript_close',array()), 45f8369d7dSTobias Sarnowski array('cdata',array('n')), 46f8369d7dSTobias Sarnowski array('monospace_open',array()), 47f8369d7dSTobias Sarnowski array('cdata',array('à')), 48f8369d7dSTobias Sarnowski array('monospace_close',array()), 49f8369d7dSTobias Sarnowski array('cdata',array('liz')), 50f8369d7dSTobias Sarnowski array('deleted_open',array()), 51f8369d7dSTobias Sarnowski array('cdata',array('æ')), 52f8369d7dSTobias Sarnowski array('deleted_close',array()), 53f8369d7dSTobias Sarnowski array('cdata',array("tiøn")), 54f8369d7dSTobias Sarnowski array('p_close',array()), 55f8369d7dSTobias Sarnowski array('document_end',array()), 56f8369d7dSTobias Sarnowski ); 57f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 58f8369d7dSTobias Sarnowski } 59f8369d7dSTobias Sarnowski 60f8369d7dSTobias Sarnowski function testHeader() { 6136dc94bbSAndreas Gohr $this->P->addMode('header',new Header()); 62f8369d7dSTobias Sarnowski $this->P->parse("Foo\n ==== Iñtërnâtiônàlizætiøn ==== \n Bar"); 63f8369d7dSTobias Sarnowski $calls = array ( 64f8369d7dSTobias Sarnowski array('document_start',array()), 65f8369d7dSTobias Sarnowski array('p_open',array()), 66f8369d7dSTobias Sarnowski array('cdata',array("\nFoo")), 67f8369d7dSTobias Sarnowski array('p_close',array()), 68f8369d7dSTobias Sarnowski array('header',array('Iñtërnâtiônàlizætiøn',3,5)), 69f8369d7dSTobias Sarnowski array('section_open',array(3)), 70f8369d7dSTobias Sarnowski array('p_open',array()), 71f8369d7dSTobias Sarnowski array('cdata',array("\n Bar")), 72f8369d7dSTobias Sarnowski array('p_close',array()), 73f8369d7dSTobias Sarnowski array('section_close',array()), 74f8369d7dSTobias Sarnowski array('document_end',array()), 75f8369d7dSTobias Sarnowski ); 76f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 77f8369d7dSTobias Sarnowski } 78f8369d7dSTobias Sarnowski 79f8369d7dSTobias Sarnowski function testTable() { 8036dc94bbSAndreas Gohr $this->P->addMode('table',new Table()); 81f8369d7dSTobias Sarnowski $this->P->parse(' 82f8369d7dSTobias Sarnowskiabc 83f8369d7dSTobias Sarnowski| Row 0 Col 1 | Iñtërnâtiônàlizætiøn | Row 0 Col 3 | 84f8369d7dSTobias Sarnowski| Row 1 Col 1 | Iñtërnâtiônàlizætiøn | Row 1 Col 3 | 85f8369d7dSTobias Sarnowskidef'); 86f8369d7dSTobias Sarnowski $calls = array ( 87f8369d7dSTobias Sarnowski array('document_start',array()), 88f8369d7dSTobias Sarnowski array('p_open',array()), 89f8369d7dSTobias Sarnowski array('cdata',array("\n\nabc")), 90f8369d7dSTobias Sarnowski array('p_close',array()), 91f8369d7dSTobias Sarnowski array('table_open',array(3, 2, 6)), 92f8369d7dSTobias Sarnowski array('tablerow_open',array()), 93f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 94f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 1 ')), 95f8369d7dSTobias Sarnowski array('tablecell_close',array()), 96f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 97f8369d7dSTobias Sarnowski array('cdata',array(' Iñtërnâtiônàlizætiøn ')), 98f8369d7dSTobias Sarnowski array('tablecell_close',array()), 99f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 100f8369d7dSTobias Sarnowski array('cdata',array(' Row 0 Col 3 ')), 101f8369d7dSTobias Sarnowski array('tablecell_close',array()), 102f8369d7dSTobias Sarnowski array('tablerow_close',array()), 103f8369d7dSTobias Sarnowski array('tablerow_open',array()), 104f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 105f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 1 ')), 106f8369d7dSTobias Sarnowski array('tablecell_close',array()), 107f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 108f8369d7dSTobias Sarnowski array('cdata',array(' Iñtërnâtiônàlizætiøn ')), 109f8369d7dSTobias Sarnowski array('tablecell_close',array()), 110f8369d7dSTobias Sarnowski array('tablecell_open',array(1,'left',1)), 111f8369d7dSTobias Sarnowski array('cdata',array(' Row 1 Col 3 ')), 112f8369d7dSTobias Sarnowski array('tablecell_close',array()), 113f8369d7dSTobias Sarnowski array('tablerow_close',array()), 114f8369d7dSTobias Sarnowski array('table_close',array(153)), 115f8369d7dSTobias Sarnowski array('p_open',array()), 116f8369d7dSTobias Sarnowski array('cdata',array('def')), 117f8369d7dSTobias Sarnowski array('p_close',array()), 118f8369d7dSTobias Sarnowski array('document_end',array()), 119f8369d7dSTobias Sarnowski ); 120f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 121f8369d7dSTobias Sarnowski } 122f8369d7dSTobias Sarnowski 123f8369d7dSTobias Sarnowski function testAcronym() { 124f8369d7dSTobias Sarnowski $t = array('Iñtërnâtiônàlizætiøn'); 12536dc94bbSAndreas Gohr $this->P->addMode('acronym',new Acronym($t)); 126f8369d7dSTobias Sarnowski $this->P->parse("Foo Iñtërnâtiônàlizætiøn Bar"); 127f8369d7dSTobias Sarnowski $calls = array ( 128f8369d7dSTobias Sarnowski array('document_start',array()), 129f8369d7dSTobias Sarnowski array('p_open',array()), 130f8369d7dSTobias Sarnowski array('cdata',array("\nFoo ")), 131f8369d7dSTobias Sarnowski array('acronym',array('Iñtërnâtiônàlizætiøn')), 132f8369d7dSTobias Sarnowski array('cdata',array(" Bar")), 133f8369d7dSTobias Sarnowski array('p_close',array()), 134f8369d7dSTobias Sarnowski array('document_end',array()), 135f8369d7dSTobias Sarnowski ); 136f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 137f8369d7dSTobias Sarnowski } 138f8369d7dSTobias Sarnowski 139f8369d7dSTobias Sarnowski function testInterwiki() { 14036dc94bbSAndreas Gohr $this->P->addMode('internallink',new InternalLink()); 141f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wp>Iñtërnâtiônàlizætiøn|Iñtërnâtiônàlizætiøn]] Bar"); 142f8369d7dSTobias Sarnowski $calls = array ( 143f8369d7dSTobias Sarnowski array('document_start',array()), 144f8369d7dSTobias Sarnowski array('p_open',array()), 145f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 146f8369d7dSTobias Sarnowski array('interwikilink',array('wp>Iñtërnâtiônàlizætiøn','Iñtërnâtiônàlizætiøn','wp','Iñtërnâtiônàlizætiøn')), 147f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 148f8369d7dSTobias Sarnowski array('p_close',array()), 149f8369d7dSTobias Sarnowski array('document_end',array()), 150f8369d7dSTobias Sarnowski ); 151f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 152f8369d7dSTobias Sarnowski } 153f8369d7dSTobias Sarnowski 154f8369d7dSTobias Sarnowski function testInternalLink() { 15536dc94bbSAndreas Gohr $this->P->addMode('internallink',new InternalLink()); 156f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:Iñtërnâtiônàlizætiøn:y:foo_bar:z|Iñtërnâtiônàlizætiøn]] Bar"); 157f8369d7dSTobias Sarnowski $calls = array ( 158f8369d7dSTobias Sarnowski array('document_start',array()), 159f8369d7dSTobias Sarnowski array('p_open',array()), 160f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 161f8369d7dSTobias Sarnowski array('internallink',array('x:Iñtërnâtiônàlizætiøn:y:foo_bar:z','Iñtërnâtiônàlizætiøn')), 162f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 163f8369d7dSTobias Sarnowski array('p_close',array()), 164f8369d7dSTobias Sarnowski array('document_end',array()), 165f8369d7dSTobias Sarnowski ); 166f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 167f8369d7dSTobias Sarnowski } 168f8369d7dSTobias Sarnowski} 169f8369d7dSTobias Sarnowski 170