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