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