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