xref: /dokuwiki/_test/tests/inc/parser/parser_eol.test.php (revision be906b566b9bdfd92c032ee07c4fd077d820a8d1)
1f8369d7dSTobias Sarnowski<?php
236dc94bbSAndreas Gohr
3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Eol;
4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Linebreak;
536dc94bbSAndreas Gohr
6f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
7f8369d7dSTobias Sarnowski
8f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
9f8369d7dSTobias Sarnowski
10f8369d7dSTobias Sarnowski    function testEol() {
1136dc94bbSAndreas Gohr        $this->P->addMode('eol',new Eol());
12f8369d7dSTobias Sarnowski        $this->P->parse("Foo\nBar");
13f8369d7dSTobias Sarnowski        $calls = array (
14f8369d7dSTobias Sarnowski            array('document_start',array()),
15f8369d7dSTobias Sarnowski            array('p_open',array()),
16f8369d7dSTobias Sarnowski            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
17f8369d7dSTobias Sarnowski            array('p_close',array()),
18f8369d7dSTobias Sarnowski            array('document_end',array()),
19f8369d7dSTobias Sarnowski        );
20f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
21f8369d7dSTobias Sarnowski    }
22f8369d7dSTobias Sarnowski
23f8369d7dSTobias Sarnowski    function testEolMultiple() {
2436dc94bbSAndreas Gohr        $this->P->addMode('eol',new Eol());
25f8369d7dSTobias Sarnowski        $this->P->parse("Foo\n\nbar\nFoo");
26f8369d7dSTobias Sarnowski        $calls = array (
27f8369d7dSTobias Sarnowski            array('document_start',array()),
28f8369d7dSTobias Sarnowski            array('p_open',array()),
29f8369d7dSTobias Sarnowski            array('cdata',array("Foo")),
30f8369d7dSTobias Sarnowski            array('p_close',array()),
31f8369d7dSTobias Sarnowski            array('p_open',array()),
32f8369d7dSTobias Sarnowski            array('cdata',array("bar".DOKU_PARSER_EOL."Foo")),
33f8369d7dSTobias Sarnowski            array('p_close',array()),
34f8369d7dSTobias Sarnowski            array('document_end',array()),
35f8369d7dSTobias Sarnowski        );
36f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
37f8369d7dSTobias Sarnowski    }
38f8369d7dSTobias Sarnowski
39f8369d7dSTobias Sarnowski    function testWinEol() {
4036dc94bbSAndreas Gohr        $this->P->addMode('eol',new Eol());
41f8369d7dSTobias Sarnowski        $this->P->parse("Foo\r\nBar");
42f8369d7dSTobias Sarnowski        $calls = array (
43f8369d7dSTobias Sarnowski            array('document_start',array()),
44f8369d7dSTobias Sarnowski            array('p_open',array()),
45f8369d7dSTobias Sarnowski            array('cdata',array("Foo".DOKU_PARSER_EOL."Bar")),
46f8369d7dSTobias Sarnowski            array('p_close',array()),
47f8369d7dSTobias Sarnowski            array('document_end',array()),
48f8369d7dSTobias Sarnowski        );
49f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
50f8369d7dSTobias Sarnowski    }
51f8369d7dSTobias Sarnowski
52f8369d7dSTobias Sarnowski    function testLinebreak() {
5336dc94bbSAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
54f8369d7dSTobias Sarnowski        $this->P->parse('Foo\\\\ Bar');
55f8369d7dSTobias Sarnowski        $calls = array (
56f8369d7dSTobias Sarnowski            array('document_start',array()),
57f8369d7dSTobias Sarnowski            array('p_open',array()),
58f8369d7dSTobias Sarnowski            array('cdata',array("\nFoo")),
59f8369d7dSTobias Sarnowski            array('linebreak',array()),
60f8369d7dSTobias Sarnowski            array('cdata',array("Bar")),
61f8369d7dSTobias Sarnowski            array('p_close',array()),
62f8369d7dSTobias Sarnowski            array('document_end',array()),
63f8369d7dSTobias Sarnowski        );
64f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
65f8369d7dSTobias Sarnowski    }
66f8369d7dSTobias Sarnowski
67f8369d7dSTobias Sarnowski    function testLinebreakPlusEol() {
6836dc94bbSAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
6936dc94bbSAndreas Gohr        $this->P->addMode('eol',new Eol());
70f8369d7dSTobias Sarnowski        $this->P->parse('Foo\\\\'."\n\n".'Bar');
71f8369d7dSTobias Sarnowski
72f8369d7dSTobias Sarnowski        $calls = array (
73f8369d7dSTobias Sarnowski            array('document_start',array()),
74f8369d7dSTobias Sarnowski            array('p_open',array()),
75f8369d7dSTobias Sarnowski            array('cdata',array("Foo")),
76f8369d7dSTobias Sarnowski            array('linebreak',array()),
77f8369d7dSTobias Sarnowski            array('p_close',array()),
78f8369d7dSTobias Sarnowski            array('p_open',array()),
79f8369d7dSTobias Sarnowski            array('cdata',array("Bar")),
80f8369d7dSTobias Sarnowski            array('p_close',array()),
81f8369d7dSTobias Sarnowski            array('document_end',array()),
82f8369d7dSTobias Sarnowski        );
83f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
84f8369d7dSTobias Sarnowski    }
85f8369d7dSTobias Sarnowski
86f8369d7dSTobias Sarnowski    function testLinebreakInvalid() {
8736dc94bbSAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
88f8369d7dSTobias Sarnowski        $this->P->parse('Foo\\\\Bar');
89f8369d7dSTobias Sarnowski        $calls = array (
90f8369d7dSTobias Sarnowski            array('document_start',array()),
91f8369d7dSTobias Sarnowski            array('p_open',array()),
92f8369d7dSTobias Sarnowski            array('cdata',array("\n".'Foo\\\\Bar')),
93f8369d7dSTobias Sarnowski            array('p_close',array()),
94f8369d7dSTobias Sarnowski            array('document_end',array()),
95f8369d7dSTobias Sarnowski        );
96f8369d7dSTobias Sarnowski        $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls);
97f8369d7dSTobias Sarnowski    }
98f8369d7dSTobias Sarnowski
99f8369d7dSTobias Sarnowski}
100f8369d7dSTobias Sarnowski
101