summaryrefslogtreecommitdiff
path: root/_test/tests/inc/parser/parser_i18n.test.php
blob: 096f2e227cec364d2660b446e354a1995d0e7fde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<?php
require_once 'parser.inc.php';

class TestOfDoku_Parser_i18n extends TestOfDoku_Parser {

    function testFormatting() {
        $formats = array (
            'strong', 'emphasis', 'underline', 'monospace',
            'subscript', 'superscript', 'deleted',
        );
        foreach ( $formats as $format ) {
            $this->P->addMode($format,new Doku_Parser_Mode_Formatting($format));
        }
        $this->P->parse("I**ñ**t__ë__r//n//â<sup>t</sup>i<sub>ô</sub>n''à''liz<del>æ</del>tiøn");
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\nI")),
            array('strong_open',array()),
            array('cdata',array('ñ')),
            array('strong_close',array()),
            array('cdata',array('t')),
            array('underline_open',array()),
            array('cdata',array('ë')),
            array('underline_close',array()),
            array('cdata',array('r')),
            array('emphasis_open',array()),
            array('cdata',array('n')),
            array('emphasis_close',array()),
            array('cdata',array('â')),
            array('superscript_open',array()),
            array('cdata',array('t')),
            array('superscript_close',array()),
            array('cdata',array('i')),
            array('subscript_open',array()),
            array('cdata',array('ô')),
            array('subscript_close',array()),
            array('cdata',array('n')),
            array('monospace_open',array()),
            array('cdata',array('à')),
            array('monospace_close',array()),
            array('cdata',array('liz')),
            array('deleted_open',array()),
            array('cdata',array('æ')),
            array('deleted_close',array()),
            array('cdata',array("tiøn")),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
    }

    function testHeader() {
        $this->P->addMode('header',new Doku_Parser_Mode_Header());
        $this->P->parse("Foo\n ==== Iñtërnâtiônàlizætiøn ==== \n Bar");
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\nFoo")),
            array('p_close',array()),
            array('header',array('Iñtërnâtiônàlizætiøn',3,5)),
            array('section_open',array(3)),
            array('p_open',array()),
            array('cdata',array("\n Bar")),
            array('p_close',array()),
            array('section_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
    }

    function testTable() {
        $this->P->addMode('table',new Doku_Parser_Mode_Table());
        $this->P->parse('
abc
| Row 0 Col 1    | Iñtërnâtiônàlizætiøn     | Row 0 Col 3        |
| Row 1 Col 1    | Iñtërnâtiônàlizætiøn     | Row 1 Col 3        |
def');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\n\nabc")),
            array('p_close',array()),
            array('table_open',array(3, 2, 6)),
            array('tablerow_open',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Row 0 Col 1    ')),
            array('tablecell_close',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Iñtërnâtiônàlizætiøn     ')),
            array('tablecell_close',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Row 0 Col 3        ')),
            array('tablecell_close',array()),
            array('tablerow_close',array()),
            array('tablerow_open',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Row 1 Col 1    ')),
            array('tablecell_close',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Iñtërnâtiônàlizætiøn     ')),
            array('tablecell_close',array()),
            array('tablecell_open',array(1,'left',1)),
            array('cdata',array(' Row 1 Col 3        ')),
            array('tablecell_close',array()),
            array('tablerow_close',array()),
            array('table_close',array(153)),
            array('p_open',array()),
            array('cdata',array('def')),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
    }

    function testAcronym() {
        $t = array('Iñtërnâtiônàlizætiøn');
        $this->P->addMode('acronym',new Doku_Parser_Mode_Acronym($t));
        $this->P->parse("Foo Iñtërnâtiônàlizætiøn Bar");
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\nFoo ")),
            array('acronym',array('Iñtërnâtiônàlizætiøn')),
            array('cdata',array(" Bar")),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
    }

    function testInterwiki() {
        $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink());
        $this->P->parse("Foo [[wp>Iñtërnâtiônàlizætiøn|Iñtërnâtiônàlizætiøn]] Bar");
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\n".'Foo ')),
            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')),
            array('cdata',array(' Bar')),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
    }

    function testInternalLink() {
        $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink());
        $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");
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('cdata',array("\n".'Foo ')),
            array('internallink',array('x:Iñtërnâtiônàlizætiøn:y:foo_bar:z','Iñtërnâtiônàlizætiøn')),
            array('cdata',array(' Bar')),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
    }
}