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