xref: /dokuwiki/_test/tests/inc/parser/parser_eol.test.php (revision 36dc94bb8b05aaaff6fdcf55dd6af80ca30d22b1)
1f8369d7dSTobias Sarnowski<?php
2*36dc94bbSAndreas Gohr
3*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Eol;
4*36dc94bbSAndreas Gohruse dokuwiki\ParserMode\Linebreak;
5*36dc94bbSAndreas Gohr
6f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php';
7f8369d7dSTobias Sarnowski
8f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Eol extends TestOfDoku_Parser {
9f8369d7dSTobias Sarnowski
10f8369d7dSTobias Sarnowski    function testEol() {
11*36dc94bbSAndreas 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() {
24*36dc94bbSAndreas 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() {
40*36dc94bbSAndreas 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() {
53*36dc94bbSAndreas 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() {
68*36dc94bbSAndreas Gohr        $this->P->addMode('linebreak',new Linebreak());
69*36dc94bbSAndreas 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() {
87*36dc94bbSAndreas 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