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