1f8369d7dSTobias Sarnowski<?php 236dc94bbSAndreas Gohr 3*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Camelcaselink; 4*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Emaillink; 5*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Externallink; 6*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Filelink; 7*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Internallink; 8*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Media; 9*be906b56SAndreas Gohruse dokuwiki\Parsing\ParserMode\Windowssharelink; 1036dc94bbSAndreas Gohr 11f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 12f8369d7dSTobias Sarnowski 139bda387aSLarsDW223/** 149bda387aSLarsDW223 * Tests for the implementation of link syntax 159bda387aSLarsDW223 * 169bda387aSLarsDW223 * @group parser_links 179bda387aSLarsDW223*/ 18f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Links extends TestOfDoku_Parser { 19f8369d7dSTobias Sarnowski 20f8369d7dSTobias Sarnowski function testExternalLinkSimple() { 2136dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 22f8369d7dSTobias Sarnowski $this->P->parse("Foo http://www.google.com Bar"); 23f8369d7dSTobias Sarnowski $calls = array ( 24f8369d7dSTobias Sarnowski array('document_start',array()), 25f8369d7dSTobias Sarnowski array('p_open',array()), 26f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 27f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com', NULL)), 28f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 29f8369d7dSTobias Sarnowski array('p_close',array()), 30f8369d7dSTobias Sarnowski array('document_end',array()), 31f8369d7dSTobias Sarnowski ); 32f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 33f8369d7dSTobias Sarnowski } 34f8369d7dSTobias Sarnowski 35f8369d7dSTobias Sarnowski function testExternalLinkCase() { 3636dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 37f8369d7dSTobias Sarnowski $this->P->parse("Foo HTTP://WWW.GOOGLE.COM Bar"); 38f8369d7dSTobias Sarnowski $calls = array ( 39f8369d7dSTobias Sarnowski array('document_start',array()), 40f8369d7dSTobias Sarnowski array('p_open',array()), 41f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 42f8369d7dSTobias Sarnowski array('externallink',array('HTTP://WWW.GOOGLE.COM', NULL)), 43f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 44f8369d7dSTobias Sarnowski array('p_close',array()), 45f8369d7dSTobias Sarnowski array('document_end',array()), 46f8369d7dSTobias Sarnowski ); 47f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 48f8369d7dSTobias Sarnowski } 49f8369d7dSTobias Sarnowski 50f8369d7dSTobias Sarnowski function testExternalIPv4() { 5136dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 52f8369d7dSTobias Sarnowski $this->P->parse("Foo http://123.123.3.21/foo Bar"); 53f8369d7dSTobias Sarnowski $calls = array ( 54f8369d7dSTobias Sarnowski array('document_start',array()), 55f8369d7dSTobias Sarnowski array('p_open',array()), 56f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 57f8369d7dSTobias Sarnowski array('externallink',array('http://123.123.3.21/foo', NULL)), 58f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 59f8369d7dSTobias Sarnowski array('p_close',array()), 60f8369d7dSTobias Sarnowski array('document_end',array()), 61f8369d7dSTobias Sarnowski ); 62f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 63f8369d7dSTobias Sarnowski } 64f8369d7dSTobias Sarnowski 65f8369d7dSTobias Sarnowski function testExternalIPv6() { 6636dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 67f8369d7dSTobias Sarnowski $this->P->parse("Foo http://[3ffe:2a00:100:7031::1]/foo Bar"); 68f8369d7dSTobias Sarnowski $calls = array ( 69f8369d7dSTobias Sarnowski array('document_start',array()), 70f8369d7dSTobias Sarnowski array('p_open',array()), 71f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 72f8369d7dSTobias Sarnowski array('externallink',array('http://[3ffe:2a00:100:7031::1]/foo', NULL)), 73f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 74f8369d7dSTobias Sarnowski array('p_close',array()), 75f8369d7dSTobias Sarnowski array('document_end',array()), 76f8369d7dSTobias Sarnowski ); 77f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 78f8369d7dSTobias Sarnowski } 79f8369d7dSTobias Sarnowski 80f8369d7dSTobias Sarnowski function testExternalMulti(){ 81f8369d7dSTobias Sarnowski $this->teardown(); 82f8369d7dSTobias Sarnowski 83f8369d7dSTobias Sarnowski $links = array( 84f8369d7dSTobias Sarnowski 'http://www.google.com', 85f8369d7dSTobias Sarnowski 'HTTP://WWW.GOOGLE.COM', 86f8369d7dSTobias Sarnowski 'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html', 87f8369d7dSTobias Sarnowski 'http://[1080:0:0:0:8:800:200C:417A]/index.html', 88f8369d7dSTobias Sarnowski 'http://[3ffe:2a00:100:7031::1]', 89f8369d7dSTobias Sarnowski 'http://[1080::8:800:200C:417A]/foo', 90f8369d7dSTobias Sarnowski 'http://[::192.9.5.5]/ipng', 91f8369d7dSTobias Sarnowski 'http://[::FFFF:129.144.52.38]:80/index.html', 92f8369d7dSTobias Sarnowski 'http://[2010:836B:4179::836B:4179]', 93f8369d7dSTobias Sarnowski ); 94f8369d7dSTobias Sarnowski $titles = array(false,null,'foo bar'); 95f8369d7dSTobias Sarnowski foreach($links as $link){ 96f8369d7dSTobias Sarnowski foreach($titles as $title){ 97f8369d7dSTobias Sarnowski if($title === false){ 98f8369d7dSTobias Sarnowski $source = $link; 99f8369d7dSTobias Sarnowski $name = null; 100f8369d7dSTobias Sarnowski }elseif($title === null){ 101f8369d7dSTobias Sarnowski $source = "[[$link]]"; 102f8369d7dSTobias Sarnowski $name = null; 103f8369d7dSTobias Sarnowski }else{ 104f8369d7dSTobias Sarnowski $source = "[[$link|$title]]"; 105f8369d7dSTobias Sarnowski $name = $title; 106f8369d7dSTobias Sarnowski } 107f8369d7dSTobias Sarnowski $this->setup(); 10836dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 10936dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 110f8369d7dSTobias Sarnowski $this->P->parse("Foo $source Bar"); 111f8369d7dSTobias Sarnowski $calls = array ( 112f8369d7dSTobias Sarnowski array('document_start',array()), 113f8369d7dSTobias Sarnowski array('p_open',array()), 114f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 115f8369d7dSTobias Sarnowski array('externallink',array($link, $name)), 116f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 117f8369d7dSTobias Sarnowski array('p_close',array()), 118f8369d7dSTobias Sarnowski array('document_end',array()), 119f8369d7dSTobias Sarnowski ); 120f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls), $calls, $source); 121f8369d7dSTobias Sarnowski $this->teardown(); 122f8369d7dSTobias Sarnowski } 123f8369d7dSTobias Sarnowski } 124f8369d7dSTobias Sarnowski 125f8369d7dSTobias Sarnowski $this->setup(); 126f8369d7dSTobias Sarnowski } 127f8369d7dSTobias Sarnowski 128f8369d7dSTobias Sarnowski function testExternalLinkJavascript() { 12936dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 130f8369d7dSTobias Sarnowski $this->P->parse("Foo javascript:alert('XSS'); Bar"); 131f8369d7dSTobias Sarnowski $calls = array ( 132f8369d7dSTobias Sarnowski array('document_start',array()), 133f8369d7dSTobias Sarnowski array('p_open',array()), 134f8369d7dSTobias Sarnowski array('cdata',array("\nFoo javascript:alert('XSS'); Bar")), 135f8369d7dSTobias Sarnowski array('p_close',array()), 136f8369d7dSTobias Sarnowski array('document_end',array()), 137f8369d7dSTobias Sarnowski ); 138f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 139f8369d7dSTobias Sarnowski } 140f8369d7dSTobias Sarnowski 141f8369d7dSTobias Sarnowski function testExternalWWWLink() { 14236dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 143f8369d7dSTobias Sarnowski $this->P->parse("Foo www.google.com Bar"); 144f8369d7dSTobias Sarnowski $calls = array ( 145f8369d7dSTobias Sarnowski array('document_start',array()), 146f8369d7dSTobias Sarnowski array('p_open',array()), 147f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 148f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com', 'www.google.com')), 149f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 150f8369d7dSTobias Sarnowski array('p_close',array()), 151f8369d7dSTobias Sarnowski array('document_end',array()), 152f8369d7dSTobias Sarnowski ); 153f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 154f8369d7dSTobias Sarnowski } 155f8369d7dSTobias Sarnowski 1565e964d2bSLarsDW223 function testExternalWWWLinkInPath() { 15736dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 1585e964d2bSLarsDW223 // See issue #936. Should NOT generate a link! 1595e964d2bSLarsDW223 $this->P->parse("Foo /home/subdir/www/www.something.de/somedir/ Bar"); 1605e964d2bSLarsDW223 $calls = array ( 1615e964d2bSLarsDW223 array('document_start',array()), 1625e964d2bSLarsDW223 array('p_open',array()), 1635e964d2bSLarsDW223 array('cdata',array("\n".'Foo /home/subdir/www/www.something.de/somedir/ Bar')), 1645e964d2bSLarsDW223 array('p_close',array()), 1655e964d2bSLarsDW223 array('document_end',array()), 1665e964d2bSLarsDW223 ); 1675e964d2bSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 1685e964d2bSLarsDW223 } 1695e964d2bSLarsDW223 1705e964d2bSLarsDW223 function testExternalWWWLinkFollowingPath() { 17136dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 1725e964d2bSLarsDW223 $this->P->parse("Foo /home/subdir/www/ www.something.de/somedir/ Bar"); 1735e964d2bSLarsDW223 $calls = array ( 1745e964d2bSLarsDW223 array('document_start',array()), 1755e964d2bSLarsDW223 array('p_open',array()), 1765e964d2bSLarsDW223 array('cdata',array("\n".'Foo /home/subdir/www/ ')), 1775e964d2bSLarsDW223 array('externallink',array('http://www.something.de/somedir/', 'www.something.de/somedir/')), 1785e964d2bSLarsDW223 array('cdata',array(' Bar')), 1795e964d2bSLarsDW223 array('p_close',array()), 1805e964d2bSLarsDW223 array('document_end',array()), 1815e964d2bSLarsDW223 ); 1825e964d2bSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 1835e964d2bSLarsDW223 } 1845e964d2bSLarsDW223 185f8369d7dSTobias Sarnowski function testExternalFTPLink() { 18636dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 187f8369d7dSTobias Sarnowski $this->P->parse("Foo ftp.sunsite.com Bar"); 188f8369d7dSTobias Sarnowski $calls = array ( 189f8369d7dSTobias Sarnowski array('document_start',array()), 190f8369d7dSTobias Sarnowski array('p_open',array()), 191f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 192f8369d7dSTobias Sarnowski array('externallink',array('ftp://ftp.sunsite.com', 'ftp.sunsite.com')), 193f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 194f8369d7dSTobias Sarnowski array('p_close',array()), 195f8369d7dSTobias Sarnowski array('document_end',array()), 196f8369d7dSTobias Sarnowski ); 197f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 198f8369d7dSTobias Sarnowski } 1995e964d2bSLarsDW223 2005e964d2bSLarsDW223 function testExternalFTPLinkInPath() { 20136dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 2025e964d2bSLarsDW223 // See issue #936. Should NOT generate a link! 2035e964d2bSLarsDW223 $this->P->parse("Foo /home/subdir/www/ftp.something.de/somedir/ Bar"); 2045e964d2bSLarsDW223 $calls = array ( 2055e964d2bSLarsDW223 array('document_start',array()), 2065e964d2bSLarsDW223 array('p_open',array()), 2075e964d2bSLarsDW223 array('cdata',array("\n".'Foo /home/subdir/www/ftp.something.de/somedir/ Bar')), 2085e964d2bSLarsDW223 array('p_close',array()), 2095e964d2bSLarsDW223 array('document_end',array()), 2105e964d2bSLarsDW223 ); 2115e964d2bSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 2125e964d2bSLarsDW223 } 2135e964d2bSLarsDW223 2145e964d2bSLarsDW223 function testExternalFTPLinkFollowingPath() { 21536dc94bbSAndreas Gohr $this->P->addMode('externallink',new Externallink()); 2165e964d2bSLarsDW223 $this->P->parse("Foo /home/subdir/www/ ftp.something.de/somedir/ Bar"); 2175e964d2bSLarsDW223 $calls = array ( 2185e964d2bSLarsDW223 array('document_start',array()), 2195e964d2bSLarsDW223 array('p_open',array()), 2205e964d2bSLarsDW223 array('cdata',array("\n".'Foo /home/subdir/www/ ')), 2215e964d2bSLarsDW223 array('externallink',array('ftp://ftp.something.de/somedir/', 'ftp.something.de/somedir/')), 2225e964d2bSLarsDW223 array('cdata',array(' Bar')), 2235e964d2bSLarsDW223 array('p_close',array()), 2245e964d2bSLarsDW223 array('document_end',array()), 2255e964d2bSLarsDW223 ); 2265e964d2bSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 2275e964d2bSLarsDW223 } 2285e964d2bSLarsDW223 229f8369d7dSTobias Sarnowski function testEmail() { 23036dc94bbSAndreas Gohr $this->P->addMode('emaillink',new Emaillink()); 231f8369d7dSTobias Sarnowski $this->P->parse("Foo <bugs@php.net> Bar"); 232f8369d7dSTobias Sarnowski $calls = array ( 233f8369d7dSTobias Sarnowski array('document_start',array()), 234f8369d7dSTobias Sarnowski array('p_open',array()), 235f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 236f8369d7dSTobias Sarnowski array('emaillink',array('bugs@php.net', NULL)), 237f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 238f8369d7dSTobias Sarnowski array('p_close',array()), 239f8369d7dSTobias Sarnowski array('document_end',array()), 240f8369d7dSTobias Sarnowski ); 241f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 242f8369d7dSTobias Sarnowski } 243f8369d7dSTobias Sarnowski 244f8369d7dSTobias Sarnowski function testEmailRFC2822() { 24536dc94bbSAndreas Gohr $this->P->addMode('emaillink',new Emaillink()); 246f8369d7dSTobias Sarnowski $this->P->parse("Foo <~fix+bug's.for/ev{e}r@php.net> Bar"); 247f8369d7dSTobias Sarnowski $calls = array ( 248f8369d7dSTobias Sarnowski array('document_start',array()), 249f8369d7dSTobias Sarnowski array('p_open',array()), 250f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 251f8369d7dSTobias Sarnowski array('emaillink',array("~fix+bug's.for/ev{e}r@php.net", NULL)), 252f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 253f8369d7dSTobias Sarnowski array('p_close',array()), 254f8369d7dSTobias Sarnowski array('document_end',array()), 255f8369d7dSTobias Sarnowski ); 256f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 257f8369d7dSTobias Sarnowski } 258f8369d7dSTobias Sarnowski 259f8369d7dSTobias Sarnowski function testEmailCase() { 26036dc94bbSAndreas Gohr $this->P->addMode('emaillink',new Emaillink()); 261f8369d7dSTobias Sarnowski $this->P->parse("Foo <bugs@pHp.net> Bar"); 262f8369d7dSTobias Sarnowski $calls = array ( 263f8369d7dSTobias Sarnowski array('document_start',array()), 264f8369d7dSTobias Sarnowski array('p_open',array()), 265f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 266f8369d7dSTobias Sarnowski array('emaillink',array('bugs@pHp.net', NULL)), 267f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 268f8369d7dSTobias Sarnowski array('p_close',array()), 269f8369d7dSTobias Sarnowski array('document_end',array()), 270f8369d7dSTobias Sarnowski ); 271f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 272f8369d7dSTobias Sarnowski } 273f8369d7dSTobias Sarnowski 274f8369d7dSTobias Sarnowski 275f8369d7dSTobias Sarnowski function testInternalLinkOneChar() { 27636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 277f8369d7dSTobias Sarnowski $this->P->parse("Foo [[l]] Bar"); 278f8369d7dSTobias Sarnowski $calls = array ( 279f8369d7dSTobias Sarnowski array('document_start',array()), 280f8369d7dSTobias Sarnowski array('p_open',array()), 281f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 282f8369d7dSTobias Sarnowski array('internallink',array('l',NULL)), 283f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 284f8369d7dSTobias Sarnowski array('p_close',array()), 285f8369d7dSTobias Sarnowski array('document_end',array()), 286f8369d7dSTobias Sarnowski ); 287f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 288f8369d7dSTobias Sarnowski } 289f8369d7dSTobias Sarnowski 290f8369d7dSTobias Sarnowski function testInternalLinkNoChar() { 29136dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 292f8369d7dSTobias Sarnowski $this->P->parse("Foo [[]] Bar"); 293f8369d7dSTobias Sarnowski $calls = array ( 294f8369d7dSTobias Sarnowski array('document_start',array()), 295f8369d7dSTobias Sarnowski array('p_open',array()), 296f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 297f8369d7dSTobias Sarnowski array('internallink',array('',NULL)), 298f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 299f8369d7dSTobias Sarnowski array('p_close',array()), 300f8369d7dSTobias Sarnowski array('document_end',array()), 301f8369d7dSTobias Sarnowski ); 302f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 303f8369d7dSTobias Sarnowski } 304f8369d7dSTobias Sarnowski 305f8369d7dSTobias Sarnowski function testInternalLinkNamespaceNoTitle() { 30636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 307f8369d7dSTobias Sarnowski $this->P->parse("Foo [[foo:bar]] Bar"); 308f8369d7dSTobias Sarnowski $calls = array ( 309f8369d7dSTobias Sarnowski array('document_start',array()), 310f8369d7dSTobias Sarnowski array('p_open',array()), 311f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 312f8369d7dSTobias Sarnowski array('internallink',array('foo:bar',NULL)), 313f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 314f8369d7dSTobias Sarnowski array('p_close',array()), 315f8369d7dSTobias Sarnowski array('document_end',array()), 316f8369d7dSTobias Sarnowski ); 317f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 318f8369d7dSTobias Sarnowski } 319f8369d7dSTobias Sarnowski 320f8369d7dSTobias Sarnowski function testInternalLinkNamespace() { 32136dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 322f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|Test]] Bar"); 323f8369d7dSTobias Sarnowski $calls = array ( 324f8369d7dSTobias Sarnowski array('document_start',array()), 325f8369d7dSTobias Sarnowski array('p_open',array()), 326f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 327f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z','Test')), 328f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 329f8369d7dSTobias Sarnowski array('p_close',array()), 330f8369d7dSTobias Sarnowski array('document_end',array()), 331f8369d7dSTobias Sarnowski ); 332f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 333f8369d7dSTobias Sarnowski } 334f8369d7dSTobias Sarnowski 335f8369d7dSTobias Sarnowski function testInternalLinkSectionRef() { 33636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 337f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wiki:syntax#internal|Syntax]] Bar"); 338f8369d7dSTobias Sarnowski $calls = array ( 339f8369d7dSTobias Sarnowski array('document_start',array()), 340f8369d7dSTobias Sarnowski array('p_open',array()), 341f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 342f8369d7dSTobias Sarnowski array('internallink',array('wiki:syntax#internal','Syntax')), 343f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 344f8369d7dSTobias Sarnowski array('p_close',array()), 345f8369d7dSTobias Sarnowski array('document_end',array()), 346f8369d7dSTobias Sarnowski ); 347f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 348f8369d7dSTobias Sarnowski } 349f8369d7dSTobias Sarnowski 3509bda387aSLarsDW223 function testInternalLinkCodeFollows() { 35136dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 3529bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 3539bda387aSLarsDW223 $calls = array ( 3549bda387aSLarsDW223 array('document_start',array()), 3559bda387aSLarsDW223 array('p_open',array()), 3569bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 3579bda387aSLarsDW223 array('internallink',array('wiki:internal:link','Test')), 3589bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 3599bda387aSLarsDW223 array('p_close',array()), 3609bda387aSLarsDW223 array('document_end',array()), 3619bda387aSLarsDW223 ); 3629bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 3639bda387aSLarsDW223 } 3649bda387aSLarsDW223 3659bda387aSLarsDW223 function testInternalLinkCodeFollows2() { 36636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 3679bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|[Square brackets in title] Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 3689bda387aSLarsDW223 $calls = array ( 3699bda387aSLarsDW223 array('document_start',array()), 3709bda387aSLarsDW223 array('p_open',array()), 3719bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 3729bda387aSLarsDW223 array('internallink',array('wiki:internal:link','[Square brackets in title] Test')), 3739bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 3749bda387aSLarsDW223 array('p_close',array()), 3759bda387aSLarsDW223 array('document_end',array()), 3769bda387aSLarsDW223 ); 3779bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 3789bda387aSLarsDW223 } 3799bda387aSLarsDW223 380f8369d7dSTobias Sarnowski function testExternalInInternalLink() { 38136dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 382f8369d7dSTobias Sarnowski $this->P->parse("Foo [[http://www.google.com|Google]] Bar"); 383f8369d7dSTobias Sarnowski $calls = array ( 384f8369d7dSTobias Sarnowski array('document_start',array()), 385f8369d7dSTobias Sarnowski array('p_open',array()), 386f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 387f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com','Google')), 388f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 389f8369d7dSTobias Sarnowski array('p_close',array()), 390f8369d7dSTobias Sarnowski array('document_end',array()), 391f8369d7dSTobias Sarnowski ); 392f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 393f8369d7dSTobias Sarnowski } 394f8369d7dSTobias Sarnowski 3959bda387aSLarsDW223 function testExternalInInternalLink2() { 39636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 3979bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar"); 3989bda387aSLarsDW223 $calls = array ( 3999bda387aSLarsDW223 array('document_start',array()), 4009bda387aSLarsDW223 array('p_open',array()), 4019bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 4029bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 4039bda387aSLarsDW223 array('cdata',array(' Bar')), 4049bda387aSLarsDW223 array('p_close',array()), 4059bda387aSLarsDW223 array('document_end',array()), 4069bda387aSLarsDW223 ); 4079bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 4089bda387aSLarsDW223 } 4099bda387aSLarsDW223 4109bda387aSLarsDW223 function testExternalInInternalLink2CodeFollows() { 41136dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 4129bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 4139bda387aSLarsDW223 $calls = array ( 4149bda387aSLarsDW223 array('document_start',array()), 4159bda387aSLarsDW223 array('p_open',array()), 4169bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 4179bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 4189bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 4199bda387aSLarsDW223 array('p_close',array()), 4209bda387aSLarsDW223 array('document_end',array()), 4219bda387aSLarsDW223 ); 4229bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 4239bda387aSLarsDW223 } 4249bda387aSLarsDW223 4252e3f2c78SAndreas Gohr function testTwoInternalLinks() { 42636dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 4272e3f2c78SAndreas Gohr $this->P->parse("Foo [[foo:bar|one]] and [[bar:foo|two]] Bar"); 4282e3f2c78SAndreas Gohr $calls = array ( 4292e3f2c78SAndreas Gohr array('document_start',array()), 4302e3f2c78SAndreas Gohr array('p_open',array()), 4312e3f2c78SAndreas Gohr array('cdata',array("\n".'Foo ')), 4322e3f2c78SAndreas Gohr array('internallink',array('foo:bar','one')), 4332e3f2c78SAndreas Gohr array('cdata',array(' and ')), 4342e3f2c78SAndreas Gohr array('internallink',array('bar:foo','two')), 4352e3f2c78SAndreas Gohr array('cdata',array(' Bar')), 4362e3f2c78SAndreas Gohr array('p_close',array()), 4372e3f2c78SAndreas Gohr array('document_end',array()), 4382e3f2c78SAndreas Gohr ); 4392e3f2c78SAndreas Gohr $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 4402e3f2c78SAndreas Gohr } 4412e3f2c78SAndreas Gohr 4422e3f2c78SAndreas Gohr 443f8369d7dSTobias Sarnowski function testInterwikiLink() { 44436dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 445f8369d7dSTobias Sarnowski $this->P->parse("Foo [[iw>somepage|Some Page]] Bar"); 446f8369d7dSTobias Sarnowski $calls = array ( 447f8369d7dSTobias Sarnowski array('document_start',array()), 448f8369d7dSTobias Sarnowski array('p_open',array()), 449f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 450f8369d7dSTobias Sarnowski array('interwikilink',array('iw>somepage','Some Page','iw','somepage')), 451f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 452f8369d7dSTobias Sarnowski array('p_close',array()), 453f8369d7dSTobias Sarnowski array('document_end',array()), 454f8369d7dSTobias Sarnowski ); 455f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 456f8369d7dSTobias Sarnowski } 457f8369d7dSTobias Sarnowski 458f8369d7dSTobias Sarnowski function testInterwikiLinkCase() { 45936dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 460f8369d7dSTobias Sarnowski $this->P->parse("Foo [[IW>somepage|Some Page]] Bar"); 461f8369d7dSTobias Sarnowski $calls = array ( 462f8369d7dSTobias Sarnowski array('document_start',array()), 463f8369d7dSTobias Sarnowski array('p_open',array()), 464f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 465f8369d7dSTobias Sarnowski array('interwikilink',array('IW>somepage','Some Page','iw','somepage')), 466f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 467f8369d7dSTobias Sarnowski array('p_close',array()), 468f8369d7dSTobias Sarnowski array('document_end',array()), 469f8369d7dSTobias Sarnowski ); 470f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 471f8369d7dSTobias Sarnowski } 472f8369d7dSTobias Sarnowski 473f8369d7dSTobias Sarnowski function testInterwikiPedia() { 47436dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 475f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wp>Callback_(computer_science)|callbacks]] Bar"); 476f8369d7dSTobias Sarnowski $calls = array ( 477f8369d7dSTobias Sarnowski array('document_start',array()), 478f8369d7dSTobias Sarnowski array('p_open',array()), 479f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 480f8369d7dSTobias Sarnowski array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')), 481f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 482f8369d7dSTobias Sarnowski array('p_close',array()), 483f8369d7dSTobias Sarnowski array('document_end',array()), 484f8369d7dSTobias Sarnowski ); 485f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 486f8369d7dSTobias Sarnowski } 487f8369d7dSTobias Sarnowski 488f8369d7dSTobias Sarnowski function testCamelCase() { 48936dc94bbSAndreas Gohr $this->P->addMode('camelcaselink',new Camelcaselink()); 490f8369d7dSTobias Sarnowski $this->P->parse("Foo FooBar Bar"); 491f8369d7dSTobias Sarnowski $calls = array ( 492f8369d7dSTobias Sarnowski array('document_start',array()), 493f8369d7dSTobias Sarnowski array('p_open',array()), 494f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 495f8369d7dSTobias Sarnowski array('camelcaselink',array('FooBar')), 496f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 497f8369d7dSTobias Sarnowski array('p_close',array()), 498f8369d7dSTobias Sarnowski array('document_end',array()), 499f8369d7dSTobias Sarnowski ); 500f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 501f8369d7dSTobias Sarnowski } 502f8369d7dSTobias Sarnowski 503f8369d7dSTobias Sarnowski function testFileLink() { 50436dc94bbSAndreas Gohr $this->P->addMode('filelink',new FileLink()); 505f8369d7dSTobias Sarnowski $this->P->parse('Foo file://temp/file.txt Bar'); 506f8369d7dSTobias Sarnowski $calls = array ( 507f8369d7dSTobias Sarnowski array('document_start',array()), 508f8369d7dSTobias Sarnowski array('p_open',array()), 509f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 510f8369d7dSTobias Sarnowski array('filelink',array('file://temp/file.txt ',NULL)), 511f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 512f8369d7dSTobias Sarnowski array('p_close',array()), 513f8369d7dSTobias Sarnowski array('document_end',array()), 514f8369d7dSTobias Sarnowski ); 515f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 516f8369d7dSTobias Sarnowski } 517f8369d7dSTobias Sarnowski 518f8369d7dSTobias Sarnowski function testFileLinkInternal() { 51936dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 520f8369d7dSTobias Sarnowski $this->P->parse('Foo [[file://temp/file.txt|Some File]] Bar'); 521f8369d7dSTobias Sarnowski $calls = array ( 522f8369d7dSTobias Sarnowski array('document_start',array()), 523f8369d7dSTobias Sarnowski array('p_open',array()), 524f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 525f8369d7dSTobias Sarnowski array('externallink',array('file://temp/file.txt','Some File')), 526f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 527f8369d7dSTobias Sarnowski array('p_close',array()), 528f8369d7dSTobias Sarnowski array('document_end',array()), 529f8369d7dSTobias Sarnowski ); 530f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 531f8369d7dSTobias Sarnowski } 532f8369d7dSTobias Sarnowski 533f8369d7dSTobias Sarnowski function testWindowsShareLink() { 53436dc94bbSAndreas Gohr $this->P->addMode('windowssharelink',new Windowssharelink()); 535f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share Bar'); 536f8369d7dSTobias Sarnowski $calls = array ( 537f8369d7dSTobias Sarnowski array('document_start',array()), 538f8369d7dSTobias Sarnowski array('p_open',array()), 539f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 540f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share',NULL)), 541f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 542f8369d7dSTobias Sarnowski array('p_close',array()), 543f8369d7dSTobias Sarnowski array('document_end',array()), 544f8369d7dSTobias Sarnowski ); 545f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 546f8369d7dSTobias Sarnowski } 547f8369d7dSTobias Sarnowski 548f8369d7dSTobias Sarnowski function testWindowsShareLinkHyphen() { 54936dc94bbSAndreas Gohr $this->P->addMode('windowssharelink',new Windowssharelink()); 550f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share-hyphen Bar'); 551f8369d7dSTobias Sarnowski $calls = array ( 552f8369d7dSTobias Sarnowski array('document_start',array()), 553f8369d7dSTobias Sarnowski array('p_open',array()), 554f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 555f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share-hyphen',NULL)), 556f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 557f8369d7dSTobias Sarnowski array('p_close',array()), 558f8369d7dSTobias Sarnowski array('document_end',array()), 559f8369d7dSTobias Sarnowski ); 560f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 561f8369d7dSTobias Sarnowski } 562f8369d7dSTobias Sarnowski 563f8369d7dSTobias Sarnowski function testWindowsShareLinkInternal() { 56436dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 565f8369d7dSTobias Sarnowski $this->P->parse('Foo [[\\\server\share|My Documents]] Bar'); 566f8369d7dSTobias Sarnowski $calls = array ( 567f8369d7dSTobias Sarnowski array('document_start',array()), 568f8369d7dSTobias Sarnowski array('p_open',array()), 569f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 570f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share','My Documents')), 571f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 572f8369d7dSTobias Sarnowski array('p_close',array()), 573f8369d7dSTobias Sarnowski array('document_end',array()), 574f8369d7dSTobias Sarnowski ); 575f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 576f8369d7dSTobias Sarnowski } 577f8369d7dSTobias Sarnowski 578f8369d7dSTobias Sarnowski function testMediaInternal() { 57936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 580f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif}} Bar'); 581f8369d7dSTobias Sarnowski $calls = array ( 582f8369d7dSTobias Sarnowski array('document_start',array()), 583f8369d7dSTobias Sarnowski array('p_open',array()), 584f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 585f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')), 586f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 587f8369d7dSTobias Sarnowski array('p_close',array()), 588f8369d7dSTobias Sarnowski array('document_end',array()), 589f8369d7dSTobias Sarnowski ); 590f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 591f8369d7dSTobias Sarnowski } 592f8369d7dSTobias Sarnowski 593f8369d7dSTobias Sarnowski function testMediaInternalLinkOnly() { 59436dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 595f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?linkonly}} Bar'); 596f8369d7dSTobias Sarnowski $calls = array ( 597f8369d7dSTobias Sarnowski array('document_start',array()), 598f8369d7dSTobias Sarnowski array('p_open',array()), 599f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 600f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')), 601f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 602f8369d7dSTobias Sarnowski array('p_close',array()), 603f8369d7dSTobias Sarnowski array('document_end',array()), 604f8369d7dSTobias Sarnowski ); 605f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 606f8369d7dSTobias Sarnowski } 607f8369d7dSTobias Sarnowski 608f8369d7dSTobias Sarnowski function testMediaNotImage() { 60936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 610f8369d7dSTobias Sarnowski $this->P->parse('Foo {{foo.txt?10x10|Some File}} Bar'); 611f8369d7dSTobias Sarnowski $calls = array ( 612f8369d7dSTobias Sarnowski array('document_start',array()), 613f8369d7dSTobias Sarnowski array('p_open',array()), 614f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 615f8369d7dSTobias Sarnowski array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')), 616f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 617f8369d7dSTobias Sarnowski array('p_close',array()), 618f8369d7dSTobias Sarnowski array('document_end',array()), 619f8369d7dSTobias Sarnowski ); 620f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 621f8369d7dSTobias Sarnowski } 622f8369d7dSTobias Sarnowski 623f8369d7dSTobias Sarnowski function testMediaInternalLAlign() { 62436dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 625f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif }} Bar'); 626f8369d7dSTobias Sarnowski $calls = array ( 627f8369d7dSTobias Sarnowski array('document_start',array()), 628f8369d7dSTobias Sarnowski array('p_open',array()), 629f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 630f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')), 631f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 632f8369d7dSTobias Sarnowski array('p_close',array()), 633f8369d7dSTobias Sarnowski array('document_end',array()), 634f8369d7dSTobias Sarnowski ); 635f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 636f8369d7dSTobias Sarnowski } 637f8369d7dSTobias Sarnowski 638f8369d7dSTobias Sarnowski function testMediaInternalRAlign() { 63936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 640f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif}} Bar'); 641f8369d7dSTobias Sarnowski $calls = array ( 642f8369d7dSTobias Sarnowski array('document_start',array()), 643f8369d7dSTobias Sarnowski array('p_open',array()), 644f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 645f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')), 646f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 647f8369d7dSTobias Sarnowski array('p_close',array()), 648f8369d7dSTobias Sarnowski array('document_end',array()), 649f8369d7dSTobias Sarnowski ); 650f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 651f8369d7dSTobias Sarnowski } 652f8369d7dSTobias Sarnowski 653f8369d7dSTobias Sarnowski function testMediaInternalCenter() { 65436dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 655f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif }} Bar'); 656f8369d7dSTobias Sarnowski $calls = array ( 657f8369d7dSTobias Sarnowski array('document_start',array()), 658f8369d7dSTobias Sarnowski array('p_open',array()), 659f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 660f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')), 661f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 662f8369d7dSTobias Sarnowski array('p_close',array()), 663f8369d7dSTobias Sarnowski array('document_end',array()), 664f8369d7dSTobias Sarnowski ); 665f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 666f8369d7dSTobias Sarnowski } 667f8369d7dSTobias Sarnowski 668f8369d7dSTobias Sarnowski function testMediaInternalParams() { 66936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 670f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100nocache}} Bar'); 671f8369d7dSTobias Sarnowski $calls = array ( 672f8369d7dSTobias Sarnowski array('document_start',array()), 673f8369d7dSTobias Sarnowski array('p_open',array()), 674f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 675f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')), 676f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 677f8369d7dSTobias Sarnowski array('p_close',array()), 678f8369d7dSTobias Sarnowski array('document_end',array()), 679f8369d7dSTobias Sarnowski ); 680f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 681f8369d7dSTobias Sarnowski } 682f8369d7dSTobias Sarnowski 683f8369d7dSTobias Sarnowski function testMediaInternalTitle() { 68436dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 685f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100|Some Image}} Bar'); 686f8369d7dSTobias Sarnowski $calls = array ( 687f8369d7dSTobias Sarnowski array('document_start',array()), 688f8369d7dSTobias Sarnowski array('p_open',array()), 689f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 690f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')), 691f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 692f8369d7dSTobias Sarnowski array('p_close',array()), 693f8369d7dSTobias Sarnowski array('document_end',array()), 694f8369d7dSTobias Sarnowski ); 695f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 696f8369d7dSTobias Sarnowski } 697f8369d7dSTobias Sarnowski 698f8369d7dSTobias Sarnowski function testMediaExternal() { 69936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 700f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif}} Bar'); 701f8369d7dSTobias Sarnowski $calls = array ( 702f8369d7dSTobias Sarnowski array('document_start',array()), 703f8369d7dSTobias Sarnowski array('p_open',array()), 704f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 705f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')), 706f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 707f8369d7dSTobias Sarnowski array('p_close',array()), 708f8369d7dSTobias Sarnowski array('document_end',array()), 709f8369d7dSTobias Sarnowski ); 710f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 711f8369d7dSTobias Sarnowski } 712f8369d7dSTobias Sarnowski 713f8369d7dSTobias Sarnowski function testMediaExternalParams() { 71436dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 715f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100nocache}} Bar'); 716f8369d7dSTobias Sarnowski $calls = array ( 717f8369d7dSTobias Sarnowski array('document_start',array()), 718f8369d7dSTobias Sarnowski array('p_open',array()), 719f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 720f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')), 721f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 722f8369d7dSTobias Sarnowski array('p_close',array()), 723f8369d7dSTobias Sarnowski array('document_end',array()), 724f8369d7dSTobias Sarnowski ); 725f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 726f8369d7dSTobias Sarnowski } 727f8369d7dSTobias Sarnowski 728f8369d7dSTobias Sarnowski function testMediaExternalTitle() { 72936dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 730f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100|Some Image}} Bar'); 731f8369d7dSTobias Sarnowski $calls = array ( 732f8369d7dSTobias Sarnowski array('document_start',array()), 733f8369d7dSTobias Sarnowski array('p_open',array()), 734f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 735f8369d7dSTobias Sarnowski array('externalmedia', 736f8369d7dSTobias Sarnowski array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')), 737f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 738f8369d7dSTobias Sarnowski array('p_close',array()), 739f8369d7dSTobias Sarnowski array('document_end',array()), 740f8369d7dSTobias Sarnowski ); 741f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 742f8369d7dSTobias Sarnowski } 743f8369d7dSTobias Sarnowski 744f8369d7dSTobias Sarnowski function testMediaInInternalLink() { 74536dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 746f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{img.gif?10x20nocache|Some Image}}]] Bar"); 747f8369d7dSTobias Sarnowski 748f8369d7dSTobias Sarnowski $image = array( 749f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 750f8369d7dSTobias Sarnowski 'src'=>'img.gif', 751f8369d7dSTobias Sarnowski 'title'=>'Some Image', 752f8369d7dSTobias Sarnowski 'align'=>NULL, 753f8369d7dSTobias Sarnowski 'width'=>10, 754f8369d7dSTobias Sarnowski 'height'=>20, 755f8369d7dSTobias Sarnowski 'cache'=>'nocache', 756f8369d7dSTobias Sarnowski 'linking'=>'details', 757f8369d7dSTobias Sarnowski ); 758f8369d7dSTobias Sarnowski 759f8369d7dSTobias Sarnowski $calls = array ( 760f8369d7dSTobias Sarnowski array('document_start',array()), 761f8369d7dSTobias Sarnowski array('p_open',array()), 762f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 763f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 764f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 765f8369d7dSTobias Sarnowski array('p_close',array()), 766f8369d7dSTobias Sarnowski array('document_end',array()), 767f8369d7dSTobias Sarnowski ); 768f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 769f8369d7dSTobias Sarnowski } 770f8369d7dSTobias Sarnowski 771f8369d7dSTobias Sarnowski function testMediaNoImageInInternalLink() { 77236dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 773f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{foo.txt?10x20nocache|Some Image}}]] Bar"); 774f8369d7dSTobias Sarnowski 775f8369d7dSTobias Sarnowski $image = array( 776f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 777f8369d7dSTobias Sarnowski 'src'=>'foo.txt', 778f8369d7dSTobias Sarnowski 'title'=>'Some Image', 779f8369d7dSTobias Sarnowski 'align'=>NULL, 780f8369d7dSTobias Sarnowski 'width'=>10, 781f8369d7dSTobias Sarnowski 'height'=>20, 782f8369d7dSTobias Sarnowski 'cache'=>'nocache', 783f8369d7dSTobias Sarnowski 'linking'=>'details', 784f8369d7dSTobias Sarnowski ); 785f8369d7dSTobias Sarnowski 786f8369d7dSTobias Sarnowski $calls = array ( 787f8369d7dSTobias Sarnowski array('document_start',array()), 788f8369d7dSTobias Sarnowski array('p_open',array()), 789f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 790f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 791f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 792f8369d7dSTobias Sarnowski array('p_close',array()), 793f8369d7dSTobias Sarnowski array('document_end',array()), 794f8369d7dSTobias Sarnowski ); 795f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 796f8369d7dSTobias Sarnowski } 797f8369d7dSTobias Sarnowski 798f8369d7dSTobias Sarnowski function testMediaInEmailLink() { 79936dc94bbSAndreas Gohr $this->P->addMode('internallink',new Internallink()); 800f8369d7dSTobias Sarnowski $this->P->parse("Foo [[foo@example.com|{{img.gif?10x20nocache|Some Image}}]] Bar"); 801f8369d7dSTobias Sarnowski 802f8369d7dSTobias Sarnowski $image = array( 803f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 804f8369d7dSTobias Sarnowski 'src'=>'img.gif', 805f8369d7dSTobias Sarnowski 'title'=>'Some Image', 806f8369d7dSTobias Sarnowski 'align'=>NULL, 807f8369d7dSTobias Sarnowski 'width'=>10, 808f8369d7dSTobias Sarnowski 'height'=>20, 809f8369d7dSTobias Sarnowski 'cache'=>'nocache', 810f8369d7dSTobias Sarnowski 'linking'=>'details', 811f8369d7dSTobias Sarnowski ); 812f8369d7dSTobias Sarnowski 813f8369d7dSTobias Sarnowski $calls = array ( 814f8369d7dSTobias Sarnowski array('document_start',array()), 815f8369d7dSTobias Sarnowski array('p_open',array()), 816f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 817f8369d7dSTobias Sarnowski array('emaillink',array('foo@example.com',$image)), 818f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 819f8369d7dSTobias Sarnowski array('p_close',array()), 820f8369d7dSTobias Sarnowski array('document_end',array()), 821f8369d7dSTobias Sarnowski ); 822f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 823f8369d7dSTobias Sarnowski } 824f8369d7dSTobias Sarnowski 825f8369d7dSTobias Sarnowski function testNestedMedia() { 82636dc94bbSAndreas Gohr $this->P->addMode('media',new Media()); 827f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif|{{foo.gif|{{bar.gif|Bar}}}}}} Bar'); 828f8369d7dSTobias Sarnowski $calls = array ( 829f8369d7dSTobias Sarnowski array('document_start',array()), 830f8369d7dSTobias Sarnowski array('p_open',array()), 831f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 832f8369d7dSTobias Sarnowski array('internalmedia', 833f8369d7dSTobias Sarnowski array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')), 834f8369d7dSTobias Sarnowski array('cdata',array('}}}} Bar')), 835f8369d7dSTobias Sarnowski array('p_close',array()), 836f8369d7dSTobias Sarnowski array('document_end',array()), 837f8369d7dSTobias Sarnowski ); 838f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 839f8369d7dSTobias Sarnowski } 840f8369d7dSTobias Sarnowski 841f8369d7dSTobias Sarnowski} 842f8369d7dSTobias Sarnowski 843