[ Index ] |
PHP Cross Reference of DokuWiki |
[Summary view] [Print] [Text view]
1 <?php 2 3 use dokuwiki\Parsing\ParserMode\Code; 4 5 require_once 'parser.inc.php'; 6 7 /** 8 * Tests to ensure functionality of the <code> syntax tag. 9 * 10 * @group parser_code 11 */ 12 class TestOfDoku_Parser_Code extends TestOfDoku_Parser { 13 14 function setUp() : void { 15 parent::setUp(); 16 $this->P->addMode('code',new Code()); 17 } 18 19 function testCode() { 20 $this->P->parse('Foo <code>Test</code> Bar'); 21 $calls = array ( 22 array('document_start',array()), 23 array('p_open',array()), 24 array('cdata',array("\n".'Foo ')), 25 array('p_close',array()), 26 array('code',array('Test',null,null)), 27 array('p_open',array()), 28 array('cdata',array(' Bar')), 29 array('p_close',array()), 30 array('document_end',array()), 31 ); 32 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 33 } 34 35 function testCodeBash() { 36 $this->P->parse('Foo <code bash>Test</code> Bar'); 37 $calls = array ( 38 array('document_start',array()), 39 array('p_open',array()), 40 array('cdata',array("\n".'Foo ')), 41 array('p_close',array()), 42 array('code',array('Test','bash',null)), 43 array('p_open',array()), 44 array('cdata',array(' Bar')), 45 array('p_close',array()), 46 array('document_end',array()), 47 ); 48 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 49 } 50 51 function testCodeDownload() { 52 $this->P->parse('Foo <code bash script.sh>Test</code> Bar'); 53 $calls = array ( 54 array('document_start',array()), 55 array('p_open',array()), 56 array('cdata',array("\n".'Foo ')), 57 array('p_close',array()), 58 array('code',array('Test','bash','script.sh')), 59 array('p_open',array()), 60 array('cdata',array(' Bar')), 61 array('p_close',array()), 62 array('document_end',array()), 63 ); 64 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 65 } 66 67 function testCodeToken() { 68 $this->P->parse('Foo <code2>Bar</code2><code>Test</code>'); 69 $calls = array ( 70 array('document_start',array()), 71 array('p_open',array()), 72 array('cdata',array("\n".'Foo <code2>Bar</code2>')), 73 array('p_close',array()), 74 array('code',array('Test',null,null)), 75 array('document_end',array()), 76 ); 77 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 78 } 79 80 function testCodeOptionsArray_OneOption() { 81 $this->P->parse('Foo <code C [enable_line_numbers]>Test</code> Bar'); 82 $calls = array ( 83 array('document_start',array()), 84 array('p_open',array()), 85 array('cdata',array("\n".'Foo ')), 86 array('p_close',array()), 87 array('code',array('Test','C', null, 88 array('enable_line_numbers' => 1) 89 )), 90 array('p_open',array()), 91 array('cdata',array(' Bar')), 92 array('p_close',array()), 93 array('document_end',array()), 94 ); 95 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 96 } 97 98 function testCodeOptionsArray_TwoOptions() { 99 $this->P->parse('Foo <code C [enable_line_numbers highlight_lines_extra="3"]>Test</code> Bar'); 100 $calls = array ( 101 array('document_start',array()), 102 array('p_open',array()), 103 array('cdata',array("\n".'Foo ')), 104 array('p_close',array()), 105 array('code',array('Test','C', null, 106 array('enable_line_numbers' => true, 107 'highlight_lines_extra' => array(3) 108 ))), 109 array('p_open',array()), 110 array('cdata',array(' Bar')), 111 array('p_close',array()), 112 array('document_end',array()), 113 ); 114 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 115 } 116 117 function testCodeOptionsArray_UnknownOption() { 118 $this->P->parse('Foo <code C [unknown="I will be deleted/ignored!"]>Test</code> Bar'); 119 $calls = array ( 120 array('document_start',array()), 121 array('p_open',array()), 122 array('cdata',array("\n".'Foo ')), 123 array('p_close',array()), 124 array('code',array('Test','C', null, null)), 125 array('p_open',array()), 126 array('cdata',array(' Bar')), 127 array('p_close',array()), 128 array('document_end',array()), 129 ); 130 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 131 } 132 133 function testCodeOptionsArray_EnableLineNumbers1() { 134 $this->P->parse('Foo <code C [enable_line_numbers]>Test</code> Bar'); 135 $calls = array ( 136 array('document_start',array()), 137 array('p_open',array()), 138 array('cdata',array("\n".'Foo ')), 139 array('p_close',array()), 140 array('code',array('Test','C', null, 141 array('enable_line_numbers' => true) 142 )), 143 array('p_open',array()), 144 array('cdata',array(' Bar')), 145 array('p_close',array()), 146 array('document_end',array()), 147 ); 148 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 149 } 150 151 function testCodeOptionsArray_EnableLineNumbers2() { 152 $this->P->parse('Foo <code C [enable_line_numbers="1"]>Test</code> Bar'); 153 $calls = array ( 154 array('document_start',array()), 155 array('p_open',array()), 156 array('cdata',array("\n".'Foo ')), 157 array('p_close',array()), 158 array('code',array('Test','C', null, 159 array('enable_line_numbers' => true) 160 )), 161 array('p_open',array()), 162 array('cdata',array(' Bar')), 163 array('p_close',array()), 164 array('document_end',array()), 165 ); 166 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 167 } 168 169 function testCodeOptionsArray_EnableLineNumbers3() { 170 $this->P->parse('Foo <code C [enable_line_numbers="0"]>Test</code> Bar'); 171 $calls = array ( 172 array('document_start',array()), 173 array('p_open',array()), 174 array('cdata',array("\n".'Foo ')), 175 array('p_close',array()), 176 array('code',array('Test','C', null, 177 array('enable_line_numbers' => false) 178 )), 179 array('p_open',array()), 180 array('cdata',array(' Bar')), 181 array('p_close',array()), 182 array('document_end',array()), 183 ); 184 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 185 } 186 187 function testCodeOptionsArray_EnableLineNumbers4() { 188 $this->P->parse('Foo <code C [enable_line_numbers=""]>Test</code> Bar'); 189 $calls = array ( 190 array('document_start',array()), 191 array('p_open',array()), 192 array('cdata',array("\n".'Foo ')), 193 array('p_close',array()), 194 array('code',array('Test','C', null, 195 array('enable_line_numbers' => true) 196 )), 197 array('p_open',array()), 198 array('cdata',array(' Bar')), 199 array('p_close',array()), 200 array('document_end',array()), 201 ); 202 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 203 } 204 205 function testCodeOptionsArray_HighlightLinesExtra1() { 206 $this->P->parse('Foo <code C [enable_line_numbers highlight_lines_extra="42, 123, 456, 789"]>Test</code> Bar'); 207 $calls = array ( 208 array('document_start',array()), 209 array('p_open',array()), 210 array('cdata',array("\n".'Foo ')), 211 array('p_close',array()), 212 array('code',array('Test','C', null, 213 array('enable_line_numbers' => true, 214 'highlight_lines_extra' => array(42, 123, 456, 789) 215 ))), 216 array('p_open',array()), 217 array('cdata',array(' Bar')), 218 array('p_close',array()), 219 array('document_end',array()), 220 ); 221 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 222 } 223 224 function testCodeOptionsArray_HighlightLinesExtra2() { 225 $this->P->parse('Foo <code C [enable_line_numbers highlight_lines_extra]>Test</code> Bar'); 226 $calls = array ( 227 array('document_start',array()), 228 array('p_open',array()), 229 array('cdata',array("\n".'Foo ')), 230 array('p_close',array()), 231 array('code',array('Test','C', null, 232 array('enable_line_numbers' => true, 233 'highlight_lines_extra' => array(1)) 234 )), 235 array('p_open',array()), 236 array('cdata',array(' Bar')), 237 array('p_close',array()), 238 array('document_end',array()), 239 ); 240 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 241 } 242 243 function testCodeOptionsArray_HighlightLinesExtra3() { 244 $this->P->parse('Foo <code C [enable_line_numbers highlight_lines_extra=""]>Test</code> Bar'); 245 $calls = array ( 246 array('document_start',array()), 247 array('p_open',array()), 248 array('cdata',array("\n".'Foo ')), 249 array('p_close',array()), 250 array('code',array('Test','C', null, 251 array('enable_line_numbers' => true, 252 'highlight_lines_extra' => array(1)) 253 )), 254 array('p_open',array()), 255 array('cdata',array(' Bar')), 256 array('p_close',array()), 257 array('document_end',array()), 258 ); 259 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 260 } 261 262 function testCodeOptionsArray_StartLineNumbersAt1() { 263 $this->P->parse('Foo <code C [enable_line_numbers [enable_line_numbers start_line_numbers_at="42"]]>Test</code> Bar'); 264 $calls = array ( 265 array('document_start',array()), 266 array('p_open',array()), 267 array('cdata',array("\n".'Foo ')), 268 array('p_close',array()), 269 array('code',array('Test','C', null, 270 array('enable_line_numbers' => true, 271 'start_line_numbers_at' => 42) 272 )), 273 array('p_open',array()), 274 array('cdata',array(' Bar')), 275 array('p_close',array()), 276 array('document_end',array()), 277 ); 278 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 279 } 280 281 function testCodeOptionsArray_StartLineNumbersAt2() { 282 $this->P->parse('Foo <code C [enable_line_numbers [enable_line_numbers start_line_numbers_at]]>Test</code> Bar'); 283 $calls = array ( 284 array('document_start',array()), 285 array('p_open',array()), 286 array('cdata',array("\n".'Foo ')), 287 array('p_close',array()), 288 array('code',array('Test','C', null, 289 array('enable_line_numbers' => true, 290 'start_line_numbers_at' => 1) 291 )), 292 array('p_open',array()), 293 array('cdata',array(' Bar')), 294 array('p_close',array()), 295 array('document_end',array()), 296 ); 297 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 298 } 299 300 function testCodeOptionsArray_StartLineNumbersAt3() { 301 $this->P->parse('Foo <code C [enable_line_numbers [enable_line_numbers start_line_numbers_at=""]]>Test</code> Bar'); 302 $calls = array ( 303 array('document_start',array()), 304 array('p_open',array()), 305 array('cdata',array("\n".'Foo ')), 306 array('p_close',array()), 307 array('code',array('Test','C', null, 308 array('enable_line_numbers' => true, 309 'start_line_numbers_at' => 1) 310 )), 311 array('p_open',array()), 312 array('cdata',array(' Bar')), 313 array('p_close',array()), 314 array('document_end',array()), 315 ); 316 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 317 } 318 319 function testCodeOptionsArray_EnableKeywordLinks1() { 320 $this->P->parse('Foo <code C [enable_keyword_links="false"]>Test</code> Bar'); 321 $calls = array ( 322 array('document_start',array()), 323 array('p_open',array()), 324 array('cdata',array("\n".'Foo ')), 325 array('p_close',array()), 326 array('code',array('Test','C', null, 327 array('enable_keyword_links' => false) 328 )), 329 array('p_open',array()), 330 array('cdata',array(' Bar')), 331 array('p_close',array()), 332 array('document_end',array()), 333 ); 334 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 335 } 336 337 function testCodeOptionsArray_EnableKeywordLinks2() { 338 $this->P->parse('Foo <code C [enable_keyword_links="true"]>Test</code> Bar'); 339 $calls = array ( 340 array('document_start',array()), 341 array('p_open',array()), 342 array('cdata',array("\n".'Foo ')), 343 array('p_close',array()), 344 array('code',array('Test','C', null, 345 array('enable_keyword_links' => true) 346 )), 347 array('p_open',array()), 348 array('cdata',array(' Bar')), 349 array('p_close',array()), 350 array('document_end',array()), 351 ); 352 $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 353 } 354 355 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body