xref: /dokuwiki/_test/tests/inc/parser/renderer_xhtml.test.php (revision bee9ac07e54eabe0b8827756aa776dd86ccc4709)
1<?php
2
3/**
4 * Class renderer_xhtml_test
5 */
6class renderer_xhtml_test extends DokuWikiTest {
7    /** @var Doku_Renderer_xhtml */
8    protected $R;
9
10    /**
11     * Called for each test
12     *
13     * @throws Exception
14     */
15    function setUp() {
16        parent::setUp();
17        $this->R = new Doku_Renderer_xhtml();
18    }
19
20    function tearDown() {
21        unset($this->R);
22    }
23
24    function test_tableopen_0arg() {
25        $this->R->table_open();
26
27        $expected = '<div class="table"><table class="inline">'."\n";
28        $this->assertEquals($expected, $this->R->doc);
29    }
30
31    function test_tableopen_1arg() {
32        $this->R->table_open(4);
33
34        $expected = '<div class="table"><table class="inline">'."\n";
35        $this->assertEquals($expected, $this->R->doc);
36    }
37
38    function test_tableopen_2arg() {
39        $this->R->table_open(4, 4);
40
41        $expected = '<div class="table"><table class="inline">'."\n";
42        $this->assertEquals($expected, $this->R->doc);
43    }
44
45    function test_tableopen_3arg() {
46        $this->R->table_open(4, 4, 100);
47
48        $expected = '<div class="table sectionedit1"><table class="inline">'."\n";
49        $this->assertEquals($expected, $this->R->doc);
50    }
51
52    function test_tableopen_4arg_str() {
53        $this->R->table_open(4, 4, 100, 'feature');
54
55        $expected = '<div class="table feature sectionedit1"><table class="inline">'."\n";
56        $this->assertEquals($expected, $this->R->doc);
57    }
58
59    function test_tableopen_4arg_arr() {
60        $this->R->table_open(4, 4, 100, array('feature', 'test'));
61
62        $expected = '<div class="table feature test sectionedit1"><table class="inline">'."\n";
63        $this->assertEquals($expected, $this->R->doc);
64    }
65
66    function test_table() {
67        $this->R->table_open(null, null, null, 'feature');
68        $this->R->tablethead_open();
69
70        $this->R->tablerow_open('item');
71        $this->R->tableheader_open();
72        $this->R->cdata('header1');
73        $this->R->tableheader_close();
74        $this->R->tableheader_open(1, null, 1, 'second');
75        $this->R->cdata('header2');
76        $this->R->tableheader_close();
77        $this->R->tablerow_close();
78
79        $this->R->tablethead_close();
80        $this->R->tabletbody_open();
81
82        $this->R->tablerow_open('values');
83        $this->R->tablecell_open(1, null, 1, 'first value');
84        $this->R->cdata('cell1,1');
85        $this->R->tablecell_close();
86        $this->R->tablecell_open(1, null, 1, 'second');
87        $this->R->cdata('cell1,2');
88        $this->R->tablecell_close();
89        $this->R->tablerow_close();
90
91        $this->R->tablerow_open();
92        $this->R->tablecell_open();
93        $this->R->cdata('cell2.1');
94        $this->R->tablecell_close();
95        $this->R->tablecell_open();
96        $this->R->cdata('cell2,2');
97        $this->R->tablecell_close();
98        $this->R->tablerow_close();
99
100        $this->R->tabletbody_close();
101        $this->R->table_close();
102
103        $expected = '<div class="table feature"><table class="inline">
104	<thead>
105	<tr class="row0 item">
106		<th class="col0">header1</th><th class="col1 second">header2</th>
107	</tr>
108	</thead>
109	<tbody>
110	<tr class="row1 values">
111		<td class="col0 first value">cell1,1</td><td class="col1 second">cell1,2</td>
112	</tr>
113	<tr class="row2">
114		<td class="col0">cell2.1</td><td class="col1">cell2,2</td>
115	</tr>
116	</tbody>
117</table></div>
118';
119        $this->assertEquals($expected, $this->R->doc);
120    }
121
122    function test_olist() {
123        $this->R->document_start();
124        $this->R->listo_open();
125
126        $this->R->listitem_open(1, Doku_Handler_List::NODE);
127        $this->R->listcontent_open();
128        $this->R->cdata('item1');
129        $this->R->listcontent_close();
130
131        $this->R->listo_open();
132
133        $this->R->listitem_open(2);
134        $this->R->listcontent_open();
135        $this->R->cdata('item1b');
136        $this->R->listcontent_close();
137        $this->R->listitem_close();
138
139        $this->R->listo_close();
140        $this->R->listitem_close();
141
142        $this->R->listitem_open(1);
143        $this->R->listcontent_open();
144        $this->R->cdata('item2');
145        $this->R->listcontent_close();
146        $this->R->listitem_close();
147
148        $this->R->listitem_open(1, Doku_Handler_List::NODE);
149        $this->R->listcontent_open();
150        $this->R->cdata('item3');
151        $this->R->listcontent_close();
152
153        $this->R->listo_open('special');
154
155        $this->R->listitem_open(2);
156        $this->R->listcontent_open();
157        $this->R->cdata('item3b');
158        $this->R->listcontent_close();
159        $this->R->listitem_close();
160
161        $this->R->listo_close();
162        $this->R->listitem_close();
163
164        $this->R->listo_close();
165        $this->R->document_end();
166
167        $expected = '<ol>
168<li class="level1 node"><div class="li">item1</div>
169<ol>
170<li class="level2"><div class="li">item1b</div>
171</li>
172</ol>
173</li>
174<li class="level1"><div class="li">item2</div>
175</li>
176<li class="level1 node"><div class="li">item3</div>
177<ol class="special">
178<li class="level2"><div class="li">item3b</div>
179</li>
180</ol>
181</li>
182</ol>
183';
184        $this->assertEquals($expected, $this->R->doc);
185    }
186
187    function test_ulist() {
188        $this->R->document_start();
189        $this->R->listu_open();
190
191        $this->R->listitem_open(1, Doku_Handler_List::NODE);
192        $this->R->listcontent_open();
193        $this->R->cdata('item1');
194        $this->R->listcontent_close();
195
196        $this->R->listu_open();
197
198        $this->R->listitem_open(2);
199        $this->R->listcontent_open();
200        $this->R->cdata('item1b');
201        $this->R->listcontent_close();
202        $this->R->listitem_close();
203
204        $this->R->listu_close();
205        $this->R->listitem_close();
206
207        $this->R->listitem_open(1);
208        $this->R->listcontent_open();
209        $this->R->cdata('item2');
210        $this->R->listcontent_close();
211        $this->R->listitem_close();
212
213        $this->R->listitem_open(1, Doku_Handler_List::NODE);
214        $this->R->listcontent_open();
215        $this->R->cdata('item3');
216        $this->R->listcontent_close();
217
218        $this->R->listu_open('special');
219
220        $this->R->listitem_open(2);
221        $this->R->listcontent_open();
222        $this->R->cdata('item3b');
223        $this->R->listcontent_close();
224        $this->R->listitem_close();
225
226        $this->R->listu_close();
227        $this->R->listitem_close();
228
229        $this->R->listu_close();
230        $this->R->document_end();
231
232        $expected = '<ul>
233<li class="level1 node"><div class="li">item1</div>
234<ul>
235<li class="level2"><div class="li">item1b</div>
236</li>
237</ul>
238</li>
239<li class="level1"><div class="li">item2</div>
240</li>
241<li class="level1 node"><div class="li">item3</div>
242<ul class="special">
243<li class="level2"><div class="li">item3b</div>
244</li>
245</ul>
246</li>
247</ul>
248';
249        $this->assertEquals($expected, $this->R->doc);
250    }
251
252    public function test_blankHeader() {
253        $this->R->header('0', 1, 1);
254        $expected = '<h1 class="sectionedit1" id="section0">0</h1>';
255        $this->assertEquals($expected, trim($this->R->doc));
256    }
257
258    public function test_blankTitleLink() {
259        global $conf;
260        $id = 'blanktest';
261
262        $conf['useheading'] = 1;
263        saveWikiText($id,'====== 0 ======', 'test');
264        $this->assertTrue(page_exists($id));
265
266        $header = p_get_first_heading($id, METADATA_RENDER_UNLIMITED);
267        $this->assertSame('0', $header);
268
269        $this->R->internallink($id);
270        $expected = '<a href="/./doku.php?id='.$id.'" class="wikilink1" title="'.$id.'">0</a>';
271        $this->assertEquals($expected, trim($this->R->doc));
272    }
273}
274