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