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