1<?php
2
3class TestOfDoku_Handler_ParseHighlightOptions extends DokuWikiTest {
4
5    public function dataProvider() {
6        return [
7            ['', null],
8            ['something weird', null],
9            ['enable_line_numbers', ['enable_line_numbers' => true]],
10            ['enable_line_numbers=1', ['enable_line_numbers' => true]],
11            ['enable_line_numbers="1"', ['enable_line_numbers' => true]],
12            ['enable_line_numbers=0', ['enable_line_numbers' => false]],
13            ['enable_line_numbers="0"', ['enable_line_numbers' => false]],
14            ['enable_line_numbers=false', ['enable_line_numbers' => false]],
15            ['enable_line_numbers="false"', ['enable_line_numbers' => false]],
16            ['highlight_lines_extra', ['highlight_lines_extra' => [1]]],
17            ['highlight_lines_extra=17', ['highlight_lines_extra' => [17]]],
18            ['highlight_lines_extra=17,19', ['highlight_lines_extra' => [17, 19]]],
19            ['highlight_lines_extra="17,19"', ['highlight_lines_extra' => [17, 19]]],
20            ['highlight_lines_extra="17,19,17"', ['highlight_lines_extra' => [17, 19]]],
21            ['start_line_numbers_at', ['start_line_numbers_at' => 1]],
22            ['start_line_numbers_at=12', ['start_line_numbers_at' => 12]],
23            ['start_line_numbers_at="12"', ['start_line_numbers_at' => 12]],
24            ['enable_keyword_links', ['enable_keyword_links' => true]],
25            ['enable_keyword_links=1', ['enable_keyword_links' => true]],
26            ['enable_keyword_links="1"', ['enable_keyword_links' => true]],
27            ['enable_keyword_links=0', ['enable_keyword_links' => false]],
28            ['enable_keyword_links="0"', ['enable_keyword_links' => false]],
29            ['enable_keyword_links=false', ['enable_keyword_links' => false]],
30            ['enable_keyword_links="false"', ['enable_keyword_links' => false]],
31            [
32                'enable_line_numbers weird nothing highlight_lines_extra=17,19 start_line_numbers_at="12" enable_keyword_links=false',
33                [
34                    'enable_line_numbers' => true,
35                    'highlight_lines_extra' => [17, 19],
36                    'start_line_numbers_at' => 12,
37                    'enable_keyword_links' => false
38                ]
39            ],
40        ];
41    }
42
43    /**
44     * @dataProvider dataProvider
45     * @param string $input options to parse
46     * @param array|null $expect expected outcome
47     * @throws ReflectionException
48     */
49    public function testOptionParser($input, $expect) {
50        $h = new Doku_Handler();
51
52        $output = $this->callInaccessibleMethod($h, 'parse_highlight_options', [$input]);
53
54        $this->assertEquals($expect, $output);
55    }
56}
57