1<?php
2
3use dokuwiki\Parsing\ParserMode\Eol;
4use dokuwiki\Parsing\ParserMode\Linebreak;
5
6require_once 'parser.inc.php';
7
8class TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
9
10    function testEol() {
11        $this->P->addMode('eol',new Eol());
12        $this->P->parse("Foo\nBar");
13        $calls = array (
14            array('document_start',array()),
15            array('p_open',array()),
16            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
17            array('p_close',array()),
18            array('document_end',array()),
19        );
20        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
21    }
22
23    function testEolMultiple() {
24        $this->P->addMode('eol',new Eol());
25        $this->P->parse("Foo\n\nbar\nFoo");
26        $calls = array (
27            array('document_start',array()),
28            array('p_open',array()),
29            array('cdata',array("Foo")),
30            array('p_close',array()),
31            array('p_open',array()),
32            array('cdata',array("bar".DOKU_PARSER_EOL."Foo")),
33            array('p_close',array()),
34            array('document_end',array()),
35        );
36        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
37    }
38
39    function testWinEol() {
40        $this->P->addMode('eol',new Eol());
41        $this->P->parse("Foo\r\nBar");
42        $calls = array (
43            array('document_start',array()),
44            array('p_open',array()),
45            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
46            array('p_close',array()),
47            array('document_end',array()),
48        );
49        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
50    }
51
52    function testLinebreak() {
53        $this->P->addMode('linebreak',new Linebreak());
54        $this->P->parse('Foo\\\\ Bar');
55        $calls = array (
56            array('document_start',array()),
57            array('p_open',array()),
58            array('cdata',array("\nFoo")),
59            array('linebreak',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 testLinebreakPlusEol() {
68        $this->P->addMode('linebreak',new Linebreak());
69        $this->P->addMode('eol',new Eol());
70        $this->P->parse('Foo\\\\'."\n\n".'Bar');
71
72        $calls = array (
73            array('document_start',array()),
74            array('p_open',array()),
75            array('cdata',array("Foo")),
76            array('linebreak',array()),
77            array('p_close',array()),
78            array('p_open',array()),
79            array('cdata',array("Bar")),
80            array('p_close',array()),
81            array('document_end',array()),
82        );
83        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
84    }
85
86    function testLinebreakInvalid() {
87        $this->P->addMode('linebreak',new Linebreak());
88        $this->P->parse('Foo\\\\Bar');
89        $calls = array (
90            array('document_start',array()),
91            array('p_open',array()),
92            array('cdata',array("\n".'Foo\\\\Bar')),
93            array('p_close',array()),
94            array('document_end',array()),
95        );
96        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
97    }
98
99}
100
101