xref: /dokuwiki/_test/tests/inc/parser/parser_i18n.test.php (revision 36dc94bb8b05aaaff6fdcf55dd6af80ca30d22b1)
1f8369d7dSTobias Sarnowski<?php
2*36dc94bbSAndreas Gohr
3*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Acronym;
4*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Formatting;
5*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Header;
6*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Internallink;
7*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Table;
8*36dc94bbSAndreas 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 ) {
19*36dc94bbSAndreas 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() {
61*36dc94bbSAndreas 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() {
80*36dc94bbSAndreas 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');
125*36dc94bbSAndreas 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() {
140*36dc94bbSAndreas 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() {
155*36dc94bbSAndreas 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