xref: /dokuwiki/_test/tests/inc/parser/parser_i18n.test.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
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