1*f8369d7dSTobias Sarnowski<?php 2*f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 3*f8369d7dSTobias Sarnowski 4*f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Preformatted extends TestOfDoku_Parser { 5*f8369d7dSTobias Sarnowski 6*f8369d7dSTobias Sarnowski function testFile() { 7*f8369d7dSTobias Sarnowski $this->P->addMode('file',new Doku_Parser_Mode_File()); 8*f8369d7dSTobias Sarnowski $this->P->parse('Foo <file>testing</file> Bar'); 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("\n".'Foo ')), 13*f8369d7dSTobias Sarnowski array('p_close',array()), 14*f8369d7dSTobias Sarnowski array('file',array('testing',null,null)), 15*f8369d7dSTobias Sarnowski array('p_open',array()), 16*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 17*f8369d7dSTobias Sarnowski array('p_close',array()), 18*f8369d7dSTobias Sarnowski array('document_end',array()), 19*f8369d7dSTobias Sarnowski ); 20*f8369d7dSTobias Sarnowski 21*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 22*f8369d7dSTobias Sarnowski } 23*f8369d7dSTobias Sarnowski 24*f8369d7dSTobias Sarnowski function testCode() { 25*f8369d7dSTobias Sarnowski $this->P->addMode('code',new Doku_Parser_Mode_Code()); 26*f8369d7dSTobias Sarnowski $this->P->parse('Foo <code>testing</code> Bar'); 27*f8369d7dSTobias Sarnowski $calls = array ( 28*f8369d7dSTobias Sarnowski array('document_start',array()), 29*f8369d7dSTobias Sarnowski array('p_open',array()), 30*f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 31*f8369d7dSTobias Sarnowski array('p_close',array()), 32*f8369d7dSTobias Sarnowski array('code',array('testing', null, null)), 33*f8369d7dSTobias Sarnowski array('p_open',array()), 34*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 35*f8369d7dSTobias Sarnowski array('p_close',array()), 36*f8369d7dSTobias Sarnowski array('document_end',array()), 37*f8369d7dSTobias Sarnowski ); 38*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 39*f8369d7dSTobias Sarnowski } 40*f8369d7dSTobias Sarnowski 41*f8369d7dSTobias Sarnowski function testCodeWhitespace() { 42*f8369d7dSTobias Sarnowski $this->P->addMode('code',new Doku_Parser_Mode_Code()); 43*f8369d7dSTobias Sarnowski $this->P->parse("Foo <code \n>testing</code> Bar"); 44*f8369d7dSTobias Sarnowski $calls = array ( 45*f8369d7dSTobias Sarnowski array('document_start',array()), 46*f8369d7dSTobias Sarnowski array('p_open',array()), 47*f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 48*f8369d7dSTobias Sarnowski array('p_close',array()), 49*f8369d7dSTobias Sarnowski array('code',array('testing', null, null)), 50*f8369d7dSTobias Sarnowski array('p_open',array()), 51*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 52*f8369d7dSTobias Sarnowski array('p_close',array()), 53*f8369d7dSTobias Sarnowski array('document_end',array()), 54*f8369d7dSTobias Sarnowski ); 55*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 56*f8369d7dSTobias Sarnowski } 57*f8369d7dSTobias Sarnowski 58*f8369d7dSTobias Sarnowski function testCodeLang() { 59*f8369d7dSTobias Sarnowski $this->P->addMode('code',new Doku_Parser_Mode_Code()); 60*f8369d7dSTobias Sarnowski $this->P->parse("Foo <code php>testing</code> Bar"); 61*f8369d7dSTobias Sarnowski $calls = array ( 62*f8369d7dSTobias Sarnowski array('document_start',array()), 63*f8369d7dSTobias Sarnowski array('p_open',array()), 64*f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 65*f8369d7dSTobias Sarnowski array('p_close',array()), 66*f8369d7dSTobias Sarnowski array('code',array('testing', 'php', null)), 67*f8369d7dSTobias Sarnowski array('p_open',array()), 68*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 69*f8369d7dSTobias Sarnowski array('p_close',array()), 70*f8369d7dSTobias Sarnowski array('document_end',array()), 71*f8369d7dSTobias Sarnowski ); 72*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 73*f8369d7dSTobias Sarnowski } 74*f8369d7dSTobias Sarnowski 75*f8369d7dSTobias Sarnowski function testPreformatted() { 76*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 77*f8369d7dSTobias Sarnowski $this->P->parse("F oo\n x \n y \nBar\n"); 78*f8369d7dSTobias Sarnowski $calls = array ( 79*f8369d7dSTobias Sarnowski array('document_start',array()), 80*f8369d7dSTobias Sarnowski array('p_open',array()), 81*f8369d7dSTobias Sarnowski array('cdata',array("\nF oo")), 82*f8369d7dSTobias Sarnowski array('p_close',array()), 83*f8369d7dSTobias Sarnowski array('preformatted',array("x \n y ")), 84*f8369d7dSTobias Sarnowski array('p_open',array()), 85*f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 86*f8369d7dSTobias Sarnowski array('p_close',array()), 87*f8369d7dSTobias Sarnowski array('document_end',array()), 88*f8369d7dSTobias Sarnowski ); 89*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 90*f8369d7dSTobias Sarnowski } 91*f8369d7dSTobias Sarnowski 92*f8369d7dSTobias Sarnowski function testPreformattedWinEOL() { 93*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 94*f8369d7dSTobias Sarnowski $this->P->parse("F oo\r\n x \r\n y \r\nBar\r\n"); 95*f8369d7dSTobias Sarnowski $calls = array ( 96*f8369d7dSTobias Sarnowski array('document_start',array()), 97*f8369d7dSTobias Sarnowski array('p_open',array()), 98*f8369d7dSTobias Sarnowski array('cdata',array("\nF oo")), 99*f8369d7dSTobias Sarnowski array('p_close',array()), 100*f8369d7dSTobias Sarnowski array('preformatted',array("x \n y ")), 101*f8369d7dSTobias Sarnowski array('p_open',array()), 102*f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 103*f8369d7dSTobias Sarnowski array('p_close',array()), 104*f8369d7dSTobias Sarnowski array('document_end',array()), 105*f8369d7dSTobias Sarnowski ); 106*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 107*f8369d7dSTobias Sarnowski } 108*f8369d7dSTobias Sarnowski 109*f8369d7dSTobias Sarnowski function testPreformattedTab() { 110*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 111*f8369d7dSTobias Sarnowski $this->P->parse("F oo\n\tx\t\n\t\ty\t\nBar\n"); 112*f8369d7dSTobias Sarnowski $calls = array ( 113*f8369d7dSTobias Sarnowski array('document_start',array()), 114*f8369d7dSTobias Sarnowski array('p_open',array()), 115*f8369d7dSTobias Sarnowski array('cdata',array("\nF oo")), 116*f8369d7dSTobias Sarnowski array('p_close',array()), 117*f8369d7dSTobias Sarnowski array('preformatted',array("x\t\n\ty\t")), 118*f8369d7dSTobias Sarnowski array('p_open',array()), 119*f8369d7dSTobias Sarnowski array('cdata',array("Bar")), 120*f8369d7dSTobias Sarnowski array('p_close',array()), 121*f8369d7dSTobias Sarnowski array('document_end',array()), 122*f8369d7dSTobias Sarnowski ); 123*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 124*f8369d7dSTobias Sarnowski } 125*f8369d7dSTobias Sarnowski 126*f8369d7dSTobias Sarnowski function testPreformattedTabWinEOL() { 127*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 128*f8369d7dSTobias Sarnowski $this->P->parse("F oo\r\n\tx\t\r\n\t\ty\t\r\nBar\r\n"); 129*f8369d7dSTobias Sarnowski $calls = array ( 130*f8369d7dSTobias Sarnowski array('document_start',array()), 131*f8369d7dSTobias Sarnowski array('p_open',array()), 132*f8369d7dSTobias Sarnowski array('cdata',array("\nF oo")), 133*f8369d7dSTobias Sarnowski array('p_close',array()), 134*f8369d7dSTobias Sarnowski array('preformatted',array("x\t\n\ty\t")), 135*f8369d7dSTobias Sarnowski array('p_open',array()), 136*f8369d7dSTobias Sarnowski array('cdata',array("Bar")), 137*f8369d7dSTobias Sarnowski array('p_close',array()), 138*f8369d7dSTobias Sarnowski array('document_end',array()), 139*f8369d7dSTobias Sarnowski ); 140*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 141*f8369d7dSTobias Sarnowski } 142*f8369d7dSTobias Sarnowski 143*f8369d7dSTobias Sarnowski function testPreformattedList() { 144*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 145*f8369d7dSTobias Sarnowski $this->P->addMode('listblock',new Doku_Parser_Mode_ListBlock()); 146*f8369d7dSTobias Sarnowski $this->P->parse(" - x \n * y \nF oo\n x \n y \n -X\n *Y\nBar\n"); 147*f8369d7dSTobias Sarnowski $calls = array ( 148*f8369d7dSTobias Sarnowski array('document_start',array()), 149*f8369d7dSTobias Sarnowski array('listo_open',array()), 150*f8369d7dSTobias Sarnowski array('listitem_open',array(1)), 151*f8369d7dSTobias Sarnowski array('listcontent_open',array()), 152*f8369d7dSTobias Sarnowski array('cdata',array(" x ")), 153*f8369d7dSTobias Sarnowski array('listcontent_close',array()), 154*f8369d7dSTobias Sarnowski array('listitem_close',array()), 155*f8369d7dSTobias Sarnowski array('listo_close',array()), 156*f8369d7dSTobias Sarnowski array('listu_open',array()), 157*f8369d7dSTobias Sarnowski array('listitem_open',array(1)), 158*f8369d7dSTobias Sarnowski array('listcontent_open',array()), 159*f8369d7dSTobias Sarnowski array('cdata',array(" y ")), 160*f8369d7dSTobias Sarnowski array('listcontent_close',array()), 161*f8369d7dSTobias Sarnowski array('listitem_close',array()), 162*f8369d7dSTobias Sarnowski array('listu_close',array()), 163*f8369d7dSTobias Sarnowski array('p_open',array()), 164*f8369d7dSTobias Sarnowski array('cdata',array("F oo")), 165*f8369d7dSTobias Sarnowski array('p_close',array()), 166*f8369d7dSTobias Sarnowski array('preformatted',array("x \n y \n-X\n*Y")), 167*f8369d7dSTobias Sarnowski array('p_open',array()), 168*f8369d7dSTobias Sarnowski array('cdata',array("Bar")), 169*f8369d7dSTobias Sarnowski array('p_close',array()), 170*f8369d7dSTobias Sarnowski array('document_end',array()), 171*f8369d7dSTobias Sarnowski ); 172*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 173*f8369d7dSTobias Sarnowski } 174*f8369d7dSTobias Sarnowski 175*f8369d7dSTobias Sarnowski // test for php 176*f8369d7dSTobias Sarnowski function testPHP() { 177*f8369d7dSTobias Sarnowski 178*f8369d7dSTobias Sarnowski $this->P->addMode('php',new Doku_Parser_Mode_PHP()); 179*f8369d7dSTobias Sarnowski $this->P->parse('Foo <php>testing</php> Bar'); 180*f8369d7dSTobias Sarnowski $calls = array ( 181*f8369d7dSTobias Sarnowski array('document_start',array()), 182*f8369d7dSTobias Sarnowski array('p_open',array()), 183*f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 184*f8369d7dSTobias Sarnowski array('php',array('testing')), 185*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 186*f8369d7dSTobias Sarnowski array('p_close',array()), 187*f8369d7dSTobias Sarnowski array('document_end',array()), 188*f8369d7dSTobias Sarnowski ); 189*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 190*f8369d7dSTobias Sarnowski } 191*f8369d7dSTobias Sarnowski 192*f8369d7dSTobias Sarnowski // test with for HTML 193*f8369d7dSTobias Sarnowski function testHTML() { 194*f8369d7dSTobias Sarnowski 195*f8369d7dSTobias Sarnowski $this->P->addMode('html',new Doku_Parser_Mode_HTML()); 196*f8369d7dSTobias Sarnowski $this->P->parse('Foo <html>testing</html> Bar'); 197*f8369d7dSTobias Sarnowski $calls = array ( 198*f8369d7dSTobias Sarnowski array('document_start',array()), 199*f8369d7dSTobias Sarnowski array('p_open',array()), 200*f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 201*f8369d7dSTobias Sarnowski array('html',array('testing')), 202*f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 203*f8369d7dSTobias Sarnowski array('p_close',array()), 204*f8369d7dSTobias Sarnowski array('document_end',array()), 205*f8369d7dSTobias Sarnowski ); 206*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 207*f8369d7dSTobias Sarnowski } 208*f8369d7dSTobias Sarnowski 209*f8369d7dSTobias Sarnowski 210*f8369d7dSTobias Sarnowski 211*f8369d7dSTobias Sarnowski function testPreformattedPlusHeaderAndEol() { 212*f8369d7dSTobias Sarnowski // Note that EOL must come after preformatted! 213*f8369d7dSTobias Sarnowski $this->P->addMode('preformatted',new Doku_Parser_Mode_Preformatted()); 214*f8369d7dSTobias Sarnowski $this->P->addMode('header',new Doku_Parser_Mode_Header()); 215*f8369d7dSTobias Sarnowski $this->P->addMode('eol',new Doku_Parser_Mode_Eol()); 216*f8369d7dSTobias Sarnowski $this->P->parse("F oo\n ==Test==\n y \nBar\n"); 217*f8369d7dSTobias Sarnowski $calls = array ( 218*f8369d7dSTobias Sarnowski array('document_start',array()), 219*f8369d7dSTobias Sarnowski array('p_open',array()), 220*f8369d7dSTobias Sarnowski array('cdata',array("F oo")), 221*f8369d7dSTobias Sarnowski array('p_close',array()), 222*f8369d7dSTobias Sarnowski array('preformatted',array("==Test==\n y ")), 223*f8369d7dSTobias Sarnowski array('p_open',array()), 224*f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 225*f8369d7dSTobias Sarnowski array('p_close',array()), 226*f8369d7dSTobias Sarnowski array('document_end',array()), 227*f8369d7dSTobias Sarnowski ); 228*f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls); 229*f8369d7dSTobias Sarnowski } 230*f8369d7dSTobias Sarnowski} 231*f8369d7dSTobias Sarnowski 232