1f8369d7dSTobias Sarnowski<?php 2f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 3f8369d7dSTobias Sarnowski 4*9bda387aSLarsDW223/** 5*9bda387aSLarsDW223 * Tests for the implementation of link syntax 6*9bda387aSLarsDW223 * 7*9bda387aSLarsDW223 * @group parser_links 8*9bda387aSLarsDW223*/ 9f8369d7dSTobias Sarnowskiclass TestOfDoku_Parser_Links extends TestOfDoku_Parser { 10f8369d7dSTobias Sarnowski 11f8369d7dSTobias Sarnowski function testExternalLinkSimple() { 12f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 13f8369d7dSTobias Sarnowski $this->P->parse("Foo http://www.google.com Bar"); 14f8369d7dSTobias Sarnowski $calls = array ( 15f8369d7dSTobias Sarnowski array('document_start',array()), 16f8369d7dSTobias Sarnowski array('p_open',array()), 17f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 18f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com', NULL)), 19f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 20f8369d7dSTobias Sarnowski array('p_close',array()), 21f8369d7dSTobias Sarnowski array('document_end',array()), 22f8369d7dSTobias Sarnowski ); 23f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 24f8369d7dSTobias Sarnowski } 25f8369d7dSTobias Sarnowski 26f8369d7dSTobias Sarnowski function testExternalLinkCase() { 27f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 28f8369d7dSTobias Sarnowski $this->P->parse("Foo HTTP://WWW.GOOGLE.COM Bar"); 29f8369d7dSTobias Sarnowski $calls = array ( 30f8369d7dSTobias Sarnowski array('document_start',array()), 31f8369d7dSTobias Sarnowski array('p_open',array()), 32f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 33f8369d7dSTobias Sarnowski array('externallink',array('HTTP://WWW.GOOGLE.COM', NULL)), 34f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 35f8369d7dSTobias Sarnowski array('p_close',array()), 36f8369d7dSTobias Sarnowski array('document_end',array()), 37f8369d7dSTobias Sarnowski ); 38f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 39f8369d7dSTobias Sarnowski } 40f8369d7dSTobias Sarnowski 41f8369d7dSTobias Sarnowski function testExternalIPv4() { 42f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 43f8369d7dSTobias Sarnowski $this->P->parse("Foo http://123.123.3.21/foo Bar"); 44f8369d7dSTobias Sarnowski $calls = array ( 45f8369d7dSTobias Sarnowski array('document_start',array()), 46f8369d7dSTobias Sarnowski array('p_open',array()), 47f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 48f8369d7dSTobias Sarnowski array('externallink',array('http://123.123.3.21/foo', NULL)), 49f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 50f8369d7dSTobias Sarnowski array('p_close',array()), 51f8369d7dSTobias Sarnowski array('document_end',array()), 52f8369d7dSTobias Sarnowski ); 53f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 54f8369d7dSTobias Sarnowski } 55f8369d7dSTobias Sarnowski 56f8369d7dSTobias Sarnowski function testExternalIPv6() { 57f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 58f8369d7dSTobias Sarnowski $this->P->parse("Foo http://[3ffe:2a00:100:7031::1]/foo Bar"); 59f8369d7dSTobias Sarnowski $calls = array ( 60f8369d7dSTobias Sarnowski array('document_start',array()), 61f8369d7dSTobias Sarnowski array('p_open',array()), 62f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 63f8369d7dSTobias Sarnowski array('externallink',array('http://[3ffe:2a00:100:7031::1]/foo', NULL)), 64f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 65f8369d7dSTobias Sarnowski array('p_close',array()), 66f8369d7dSTobias Sarnowski array('document_end',array()), 67f8369d7dSTobias Sarnowski ); 68f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 69f8369d7dSTobias Sarnowski } 70f8369d7dSTobias Sarnowski 71f8369d7dSTobias Sarnowski function testExternalMulti(){ 72f8369d7dSTobias Sarnowski $this->teardown(); 73f8369d7dSTobias Sarnowski 74f8369d7dSTobias Sarnowski $links = array( 75f8369d7dSTobias Sarnowski 'http://www.google.com', 76f8369d7dSTobias Sarnowski 'HTTP://WWW.GOOGLE.COM', 77f8369d7dSTobias Sarnowski 'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html', 78f8369d7dSTobias Sarnowski 'http://[1080:0:0:0:8:800:200C:417A]/index.html', 79f8369d7dSTobias Sarnowski 'http://[3ffe:2a00:100:7031::1]', 80f8369d7dSTobias Sarnowski 'http://[1080::8:800:200C:417A]/foo', 81f8369d7dSTobias Sarnowski 'http://[::192.9.5.5]/ipng', 82f8369d7dSTobias Sarnowski 'http://[::FFFF:129.144.52.38]:80/index.html', 83f8369d7dSTobias Sarnowski 'http://[2010:836B:4179::836B:4179]', 84f8369d7dSTobias Sarnowski ); 85f8369d7dSTobias Sarnowski $titles = array(false,null,'foo bar'); 86f8369d7dSTobias Sarnowski foreach($links as $link){ 87f8369d7dSTobias Sarnowski foreach($titles as $title){ 88f8369d7dSTobias Sarnowski if($title === false){ 89f8369d7dSTobias Sarnowski $source = $link; 90f8369d7dSTobias Sarnowski $name = null; 91f8369d7dSTobias Sarnowski }elseif($title === null){ 92f8369d7dSTobias Sarnowski $source = "[[$link]]"; 93f8369d7dSTobias Sarnowski $name = null; 94f8369d7dSTobias Sarnowski }else{ 95f8369d7dSTobias Sarnowski $source = "[[$link|$title]]"; 96f8369d7dSTobias Sarnowski $name = $title; 97f8369d7dSTobias Sarnowski } 98f8369d7dSTobias Sarnowski $this->setup(); 99f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 100f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 101f8369d7dSTobias Sarnowski $this->P->parse("Foo $source Bar"); 102f8369d7dSTobias Sarnowski $calls = array ( 103f8369d7dSTobias Sarnowski array('document_start',array()), 104f8369d7dSTobias Sarnowski array('p_open',array()), 105f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 106f8369d7dSTobias Sarnowski array('externallink',array($link, $name)), 107f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 108f8369d7dSTobias Sarnowski array('p_close',array()), 109f8369d7dSTobias Sarnowski array('document_end',array()), 110f8369d7dSTobias Sarnowski ); 111f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls), $calls, $source); 112f8369d7dSTobias Sarnowski $this->teardown(); 113f8369d7dSTobias Sarnowski } 114f8369d7dSTobias Sarnowski } 115f8369d7dSTobias Sarnowski 116f8369d7dSTobias Sarnowski $this->setup(); 117f8369d7dSTobias Sarnowski } 118f8369d7dSTobias Sarnowski 119f8369d7dSTobias Sarnowski function testExternalLinkJavascript() { 120f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 121f8369d7dSTobias Sarnowski $this->P->parse("Foo javascript:alert('XSS'); Bar"); 122f8369d7dSTobias Sarnowski $calls = array ( 123f8369d7dSTobias Sarnowski array('document_start',array()), 124f8369d7dSTobias Sarnowski array('p_open',array()), 125f8369d7dSTobias Sarnowski array('cdata',array("\nFoo javascript:alert('XSS'); Bar")), 126f8369d7dSTobias Sarnowski array('p_close',array()), 127f8369d7dSTobias Sarnowski array('document_end',array()), 128f8369d7dSTobias Sarnowski ); 129f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 130f8369d7dSTobias Sarnowski } 131f8369d7dSTobias Sarnowski 132f8369d7dSTobias Sarnowski function testExternalWWWLink() { 133f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 134f8369d7dSTobias Sarnowski $this->P->parse("Foo www.google.com Bar"); 135f8369d7dSTobias Sarnowski $calls = array ( 136f8369d7dSTobias Sarnowski array('document_start',array()), 137f8369d7dSTobias Sarnowski array('p_open',array()), 138f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 139f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com', 'www.google.com')), 140f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 141f8369d7dSTobias Sarnowski array('p_close',array()), 142f8369d7dSTobias Sarnowski array('document_end',array()), 143f8369d7dSTobias Sarnowski ); 144f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 145f8369d7dSTobias Sarnowski } 146f8369d7dSTobias Sarnowski 147f8369d7dSTobias Sarnowski function testExternalFTPLink() { 148f8369d7dSTobias Sarnowski $this->P->addMode('externallink',new Doku_Parser_Mode_ExternalLink()); 149f8369d7dSTobias Sarnowski $this->P->parse("Foo ftp.sunsite.com Bar"); 150f8369d7dSTobias Sarnowski $calls = array ( 151f8369d7dSTobias Sarnowski array('document_start',array()), 152f8369d7dSTobias Sarnowski array('p_open',array()), 153f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 154f8369d7dSTobias Sarnowski array('externallink',array('ftp://ftp.sunsite.com', 'ftp.sunsite.com')), 155f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 156f8369d7dSTobias Sarnowski array('p_close',array()), 157f8369d7dSTobias Sarnowski array('document_end',array()), 158f8369d7dSTobias Sarnowski ); 159f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 160f8369d7dSTobias Sarnowski } 161f8369d7dSTobias Sarnowski function testEmail() { 162f8369d7dSTobias Sarnowski $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); 163f8369d7dSTobias Sarnowski $this->P->parse("Foo <bugs@php.net> Bar"); 164f8369d7dSTobias Sarnowski $calls = array ( 165f8369d7dSTobias Sarnowski array('document_start',array()), 166f8369d7dSTobias Sarnowski array('p_open',array()), 167f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 168f8369d7dSTobias Sarnowski array('emaillink',array('bugs@php.net', NULL)), 169f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 170f8369d7dSTobias Sarnowski array('p_close',array()), 171f8369d7dSTobias Sarnowski array('document_end',array()), 172f8369d7dSTobias Sarnowski ); 173f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 174f8369d7dSTobias Sarnowski } 175f8369d7dSTobias Sarnowski 176f8369d7dSTobias Sarnowski function testEmailRFC2822() { 177f8369d7dSTobias Sarnowski $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); 178f8369d7dSTobias Sarnowski $this->P->parse("Foo <~fix+bug's.for/ev{e}r@php.net> Bar"); 179f8369d7dSTobias Sarnowski $calls = array ( 180f8369d7dSTobias Sarnowski array('document_start',array()), 181f8369d7dSTobias Sarnowski array('p_open',array()), 182f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 183f8369d7dSTobias Sarnowski array('emaillink',array("~fix+bug's.for/ev{e}r@php.net", NULL)), 184f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 185f8369d7dSTobias Sarnowski array('p_close',array()), 186f8369d7dSTobias Sarnowski array('document_end',array()), 187f8369d7dSTobias Sarnowski ); 188f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 189f8369d7dSTobias Sarnowski } 190f8369d7dSTobias Sarnowski 191f8369d7dSTobias Sarnowski function testEmailCase() { 192f8369d7dSTobias Sarnowski $this->P->addMode('emaillink',new Doku_Parser_Mode_Emaillink()); 193f8369d7dSTobias Sarnowski $this->P->parse("Foo <bugs@pHp.net> Bar"); 194f8369d7dSTobias Sarnowski $calls = array ( 195f8369d7dSTobias Sarnowski array('document_start',array()), 196f8369d7dSTobias Sarnowski array('p_open',array()), 197f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 198f8369d7dSTobias Sarnowski array('emaillink',array('bugs@pHp.net', NULL)), 199f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 200f8369d7dSTobias Sarnowski array('p_close',array()), 201f8369d7dSTobias Sarnowski array('document_end',array()), 202f8369d7dSTobias Sarnowski ); 203f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 204f8369d7dSTobias Sarnowski } 205f8369d7dSTobias Sarnowski 206f8369d7dSTobias Sarnowski 207f8369d7dSTobias Sarnowski function testInternalLinkOneChar() { 208f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 209f8369d7dSTobias Sarnowski $this->P->parse("Foo [[l]] Bar"); 210f8369d7dSTobias Sarnowski $calls = array ( 211f8369d7dSTobias Sarnowski array('document_start',array()), 212f8369d7dSTobias Sarnowski array('p_open',array()), 213f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 214f8369d7dSTobias Sarnowski array('internallink',array('l',NULL)), 215f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 216f8369d7dSTobias Sarnowski array('p_close',array()), 217f8369d7dSTobias Sarnowski array('document_end',array()), 218f8369d7dSTobias Sarnowski ); 219f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 220f8369d7dSTobias Sarnowski } 221f8369d7dSTobias Sarnowski 222f8369d7dSTobias Sarnowski function testInternalLinkNoChar() { 223f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 224f8369d7dSTobias Sarnowski $this->P->parse("Foo [[]] Bar"); 225f8369d7dSTobias Sarnowski $calls = array ( 226f8369d7dSTobias Sarnowski array('document_start',array()), 227f8369d7dSTobias Sarnowski array('p_open',array()), 228f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 229f8369d7dSTobias Sarnowski array('internallink',array('',NULL)), 230f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 231f8369d7dSTobias Sarnowski array('p_close',array()), 232f8369d7dSTobias Sarnowski array('document_end',array()), 233f8369d7dSTobias Sarnowski ); 234f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 235f8369d7dSTobias Sarnowski } 236f8369d7dSTobias Sarnowski 237f8369d7dSTobias Sarnowski function testInternalLinkNamespaceNoTitle() { 238f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 239f8369d7dSTobias Sarnowski $this->P->parse("Foo [[foo:bar]] Bar"); 240f8369d7dSTobias Sarnowski $calls = array ( 241f8369d7dSTobias Sarnowski array('document_start',array()), 242f8369d7dSTobias Sarnowski array('p_open',array()), 243f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 244f8369d7dSTobias Sarnowski array('internallink',array('foo:bar',NULL)), 245f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 246f8369d7dSTobias Sarnowski array('p_close',array()), 247f8369d7dSTobias Sarnowski array('document_end',array()), 248f8369d7dSTobias Sarnowski ); 249f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 250f8369d7dSTobias Sarnowski } 251f8369d7dSTobias Sarnowski 252f8369d7dSTobias Sarnowski function testInternalLinkNamespace() { 253f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 254f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|Test]] Bar"); 255f8369d7dSTobias Sarnowski $calls = array ( 256f8369d7dSTobias Sarnowski array('document_start',array()), 257f8369d7dSTobias Sarnowski array('p_open',array()), 258f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 259f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z','Test')), 260f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 261f8369d7dSTobias Sarnowski array('p_close',array()), 262f8369d7dSTobias Sarnowski array('document_end',array()), 263f8369d7dSTobias Sarnowski ); 264f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 265f8369d7dSTobias Sarnowski } 266f8369d7dSTobias Sarnowski 267f8369d7dSTobias Sarnowski function testInternalLinkSectionRef() { 268f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 269f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wiki:syntax#internal|Syntax]] Bar"); 270f8369d7dSTobias Sarnowski $calls = array ( 271f8369d7dSTobias Sarnowski array('document_start',array()), 272f8369d7dSTobias Sarnowski array('p_open',array()), 273f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 274f8369d7dSTobias Sarnowski array('internallink',array('wiki:syntax#internal','Syntax')), 275f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 276f8369d7dSTobias Sarnowski array('p_close',array()), 277f8369d7dSTobias Sarnowski array('document_end',array()), 278f8369d7dSTobias Sarnowski ); 279f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 280f8369d7dSTobias Sarnowski } 281f8369d7dSTobias Sarnowski 282*9bda387aSLarsDW223 function testInternalLinkCodeFollows() { 283*9bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 284*9bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 285*9bda387aSLarsDW223 $calls = array ( 286*9bda387aSLarsDW223 array('document_start',array()), 287*9bda387aSLarsDW223 array('p_open',array()), 288*9bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 289*9bda387aSLarsDW223 array('internallink',array('wiki:internal:link','Test')), 290*9bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 291*9bda387aSLarsDW223 array('p_close',array()), 292*9bda387aSLarsDW223 array('document_end',array()), 293*9bda387aSLarsDW223 ); 294*9bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 295*9bda387aSLarsDW223 } 296*9bda387aSLarsDW223 297*9bda387aSLarsDW223 function testInternalLinkCodeFollows2() { 298*9bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 299*9bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|[Square brackets in title] Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 300*9bda387aSLarsDW223 $calls = array ( 301*9bda387aSLarsDW223 array('document_start',array()), 302*9bda387aSLarsDW223 array('p_open',array()), 303*9bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 304*9bda387aSLarsDW223 array('internallink',array('wiki:internal:link','[Square brackets in title] Test')), 305*9bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 306*9bda387aSLarsDW223 array('p_close',array()), 307*9bda387aSLarsDW223 array('document_end',array()), 308*9bda387aSLarsDW223 ); 309*9bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 310*9bda387aSLarsDW223 } 311*9bda387aSLarsDW223 312f8369d7dSTobias Sarnowski function testExternalInInternalLink() { 313f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 314f8369d7dSTobias Sarnowski $this->P->parse("Foo [[http://www.google.com|Google]] Bar"); 315f8369d7dSTobias Sarnowski $calls = array ( 316f8369d7dSTobias Sarnowski array('document_start',array()), 317f8369d7dSTobias Sarnowski array('p_open',array()), 318f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 319f8369d7dSTobias Sarnowski array('externallink',array('http://www.google.com','Google')), 320f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 321f8369d7dSTobias Sarnowski array('p_close',array()), 322f8369d7dSTobias Sarnowski array('document_end',array()), 323f8369d7dSTobias Sarnowski ); 324f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 325f8369d7dSTobias Sarnowski } 326f8369d7dSTobias Sarnowski 327*9bda387aSLarsDW223 function testExternalInInternalLink2() { 328*9bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 329*9bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar"); 330*9bda387aSLarsDW223 $calls = array ( 331*9bda387aSLarsDW223 array('document_start',array()), 332*9bda387aSLarsDW223 array('p_open',array()), 333*9bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 334*9bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 335*9bda387aSLarsDW223 array('cdata',array(' Bar')), 336*9bda387aSLarsDW223 array('p_close',array()), 337*9bda387aSLarsDW223 array('document_end',array()), 338*9bda387aSLarsDW223 ); 339*9bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 340*9bda387aSLarsDW223 } 341*9bda387aSLarsDW223 342*9bda387aSLarsDW223 function testExternalInInternalLink2CodeFollows() { 343*9bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 344*9bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 345*9bda387aSLarsDW223 $calls = array ( 346*9bda387aSLarsDW223 array('document_start',array()), 347*9bda387aSLarsDW223 array('p_open',array()), 348*9bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 349*9bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 350*9bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 351*9bda387aSLarsDW223 array('p_close',array()), 352*9bda387aSLarsDW223 array('document_end',array()), 353*9bda387aSLarsDW223 ); 354*9bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 355*9bda387aSLarsDW223 } 356*9bda387aSLarsDW223 357f8369d7dSTobias Sarnowski function testInterwikiLink() { 358f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 359f8369d7dSTobias Sarnowski $this->P->parse("Foo [[iw>somepage|Some Page]] Bar"); 360f8369d7dSTobias Sarnowski $calls = array ( 361f8369d7dSTobias Sarnowski array('document_start',array()), 362f8369d7dSTobias Sarnowski array('p_open',array()), 363f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 364f8369d7dSTobias Sarnowski array('interwikilink',array('iw>somepage','Some Page','iw','somepage')), 365f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 366f8369d7dSTobias Sarnowski array('p_close',array()), 367f8369d7dSTobias Sarnowski array('document_end',array()), 368f8369d7dSTobias Sarnowski ); 369f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 370f8369d7dSTobias Sarnowski } 371f8369d7dSTobias Sarnowski 372f8369d7dSTobias Sarnowski function testInterwikiLinkCase() { 373f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 374f8369d7dSTobias Sarnowski $this->P->parse("Foo [[IW>somepage|Some Page]] Bar"); 375f8369d7dSTobias Sarnowski $calls = array ( 376f8369d7dSTobias Sarnowski array('document_start',array()), 377f8369d7dSTobias Sarnowski array('p_open',array()), 378f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 379f8369d7dSTobias Sarnowski array('interwikilink',array('IW>somepage','Some Page','iw','somepage')), 380f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 381f8369d7dSTobias Sarnowski array('p_close',array()), 382f8369d7dSTobias Sarnowski array('document_end',array()), 383f8369d7dSTobias Sarnowski ); 384f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 385f8369d7dSTobias Sarnowski } 386f8369d7dSTobias Sarnowski 387f8369d7dSTobias Sarnowski function testInterwikiPedia() { 388f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 389f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wp>Callback_(computer_science)|callbacks]] Bar"); 390f8369d7dSTobias Sarnowski $calls = array ( 391f8369d7dSTobias Sarnowski array('document_start',array()), 392f8369d7dSTobias Sarnowski array('p_open',array()), 393f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 394f8369d7dSTobias Sarnowski array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')), 395f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 396f8369d7dSTobias Sarnowski array('p_close',array()), 397f8369d7dSTobias Sarnowski array('document_end',array()), 398f8369d7dSTobias Sarnowski ); 399f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 400f8369d7dSTobias Sarnowski } 401f8369d7dSTobias Sarnowski 402f8369d7dSTobias Sarnowski function testCamelCase() { 403f8369d7dSTobias Sarnowski $this->P->addMode('camelcaselink',new Doku_Parser_Mode_CamelCaseLink()); 404f8369d7dSTobias Sarnowski $this->P->parse("Foo FooBar Bar"); 405f8369d7dSTobias Sarnowski $calls = array ( 406f8369d7dSTobias Sarnowski array('document_start',array()), 407f8369d7dSTobias Sarnowski array('p_open',array()), 408f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 409f8369d7dSTobias Sarnowski array('camelcaselink',array('FooBar')), 410f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 411f8369d7dSTobias Sarnowski array('p_close',array()), 412f8369d7dSTobias Sarnowski array('document_end',array()), 413f8369d7dSTobias Sarnowski ); 414f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 415f8369d7dSTobias Sarnowski } 416f8369d7dSTobias Sarnowski 417f8369d7dSTobias Sarnowski function testFileLink() { 418f8369d7dSTobias Sarnowski $this->P->addMode('filelink',new Doku_Parser_Mode_FileLink()); 419f8369d7dSTobias Sarnowski $this->P->parse('Foo file://temp/file.txt Bar'); 420f8369d7dSTobias Sarnowski $calls = array ( 421f8369d7dSTobias Sarnowski array('document_start',array()), 422f8369d7dSTobias Sarnowski array('p_open',array()), 423f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 424f8369d7dSTobias Sarnowski array('filelink',array('file://temp/file.txt ',NULL)), 425f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 426f8369d7dSTobias Sarnowski array('p_close',array()), 427f8369d7dSTobias Sarnowski array('document_end',array()), 428f8369d7dSTobias Sarnowski ); 429f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 430f8369d7dSTobias Sarnowski } 431f8369d7dSTobias Sarnowski 432f8369d7dSTobias Sarnowski function testFileLinkInternal() { 433f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 434f8369d7dSTobias Sarnowski $this->P->parse('Foo [[file://temp/file.txt|Some File]] Bar'); 435f8369d7dSTobias Sarnowski $calls = array ( 436f8369d7dSTobias Sarnowski array('document_start',array()), 437f8369d7dSTobias Sarnowski array('p_open',array()), 438f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 439f8369d7dSTobias Sarnowski array('externallink',array('file://temp/file.txt','Some File')), 440f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 441f8369d7dSTobias Sarnowski array('p_close',array()), 442f8369d7dSTobias Sarnowski array('document_end',array()), 443f8369d7dSTobias Sarnowski ); 444f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 445f8369d7dSTobias Sarnowski } 446f8369d7dSTobias Sarnowski 447f8369d7dSTobias Sarnowski function testWindowsShareLink() { 448f8369d7dSTobias Sarnowski $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); 449f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share Bar'); 450f8369d7dSTobias Sarnowski $calls = array ( 451f8369d7dSTobias Sarnowski array('document_start',array()), 452f8369d7dSTobias Sarnowski array('p_open',array()), 453f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 454f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share',NULL)), 455f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 456f8369d7dSTobias Sarnowski array('p_close',array()), 457f8369d7dSTobias Sarnowski array('document_end',array()), 458f8369d7dSTobias Sarnowski ); 459f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 460f8369d7dSTobias Sarnowski } 461f8369d7dSTobias Sarnowski 462f8369d7dSTobias Sarnowski function testWindowsShareLinkHyphen() { 463f8369d7dSTobias Sarnowski $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); 464f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share-hyphen Bar'); 465f8369d7dSTobias Sarnowski $calls = array ( 466f8369d7dSTobias Sarnowski array('document_start',array()), 467f8369d7dSTobias Sarnowski array('p_open',array()), 468f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 469f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share-hyphen',NULL)), 470f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 471f8369d7dSTobias Sarnowski array('p_close',array()), 472f8369d7dSTobias Sarnowski array('document_end',array()), 473f8369d7dSTobias Sarnowski ); 474f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 475f8369d7dSTobias Sarnowski } 476f8369d7dSTobias Sarnowski 477f8369d7dSTobias Sarnowski function testWindowsShareLinkInternal() { 478f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 479f8369d7dSTobias Sarnowski $this->P->parse('Foo [[\\\server\share|My Documents]] Bar'); 480f8369d7dSTobias Sarnowski $calls = array ( 481f8369d7dSTobias Sarnowski array('document_start',array()), 482f8369d7dSTobias Sarnowski array('p_open',array()), 483f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 484f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share','My Documents')), 485f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 486f8369d7dSTobias Sarnowski array('p_close',array()), 487f8369d7dSTobias Sarnowski array('document_end',array()), 488f8369d7dSTobias Sarnowski ); 489f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 490f8369d7dSTobias Sarnowski } 491f8369d7dSTobias Sarnowski 492f8369d7dSTobias Sarnowski function testMediaInternal() { 493f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 494f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif}} Bar'); 495f8369d7dSTobias Sarnowski $calls = array ( 496f8369d7dSTobias Sarnowski array('document_start',array()), 497f8369d7dSTobias Sarnowski array('p_open',array()), 498f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 499f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')), 500f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 501f8369d7dSTobias Sarnowski array('p_close',array()), 502f8369d7dSTobias Sarnowski array('document_end',array()), 503f8369d7dSTobias Sarnowski ); 504f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 505f8369d7dSTobias Sarnowski } 506f8369d7dSTobias Sarnowski 507f8369d7dSTobias Sarnowski function testMediaInternalLinkOnly() { 508f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 509f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?linkonly}} Bar'); 510f8369d7dSTobias Sarnowski $calls = array ( 511f8369d7dSTobias Sarnowski array('document_start',array()), 512f8369d7dSTobias Sarnowski array('p_open',array()), 513f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 514f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')), 515f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 516f8369d7dSTobias Sarnowski array('p_close',array()), 517f8369d7dSTobias Sarnowski array('document_end',array()), 518f8369d7dSTobias Sarnowski ); 519f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 520f8369d7dSTobias Sarnowski } 521f8369d7dSTobias Sarnowski 522f8369d7dSTobias Sarnowski function testMediaNotImage() { 523f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 524f8369d7dSTobias Sarnowski $this->P->parse('Foo {{foo.txt?10x10|Some File}} Bar'); 525f8369d7dSTobias Sarnowski $calls = array ( 526f8369d7dSTobias Sarnowski array('document_start',array()), 527f8369d7dSTobias Sarnowski array('p_open',array()), 528f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 529f8369d7dSTobias Sarnowski array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')), 530f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 531f8369d7dSTobias Sarnowski array('p_close',array()), 532f8369d7dSTobias Sarnowski array('document_end',array()), 533f8369d7dSTobias Sarnowski ); 534f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 535f8369d7dSTobias Sarnowski } 536f8369d7dSTobias Sarnowski 537f8369d7dSTobias Sarnowski function testMediaInternalLAlign() { 538f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 539f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif }} Bar'); 540f8369d7dSTobias Sarnowski $calls = array ( 541f8369d7dSTobias Sarnowski array('document_start',array()), 542f8369d7dSTobias Sarnowski array('p_open',array()), 543f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 544f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')), 545f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 546f8369d7dSTobias Sarnowski array('p_close',array()), 547f8369d7dSTobias Sarnowski array('document_end',array()), 548f8369d7dSTobias Sarnowski ); 549f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 550f8369d7dSTobias Sarnowski } 551f8369d7dSTobias Sarnowski 552f8369d7dSTobias Sarnowski function testMediaInternalRAlign() { 553f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 554f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif}} Bar'); 555f8369d7dSTobias Sarnowski $calls = array ( 556f8369d7dSTobias Sarnowski array('document_start',array()), 557f8369d7dSTobias Sarnowski array('p_open',array()), 558f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 559f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')), 560f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 561f8369d7dSTobias Sarnowski array('p_close',array()), 562f8369d7dSTobias Sarnowski array('document_end',array()), 563f8369d7dSTobias Sarnowski ); 564f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 565f8369d7dSTobias Sarnowski } 566f8369d7dSTobias Sarnowski 567f8369d7dSTobias Sarnowski function testMediaInternalCenter() { 568f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 569f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif }} Bar'); 570f8369d7dSTobias Sarnowski $calls = array ( 571f8369d7dSTobias Sarnowski array('document_start',array()), 572f8369d7dSTobias Sarnowski array('p_open',array()), 573f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 574f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')), 575f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 576f8369d7dSTobias Sarnowski array('p_close',array()), 577f8369d7dSTobias Sarnowski array('document_end',array()), 578f8369d7dSTobias Sarnowski ); 579f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 580f8369d7dSTobias Sarnowski } 581f8369d7dSTobias Sarnowski 582f8369d7dSTobias Sarnowski function testMediaInternalParams() { 583f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 584f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100nocache}} Bar'); 585f8369d7dSTobias Sarnowski $calls = array ( 586f8369d7dSTobias Sarnowski array('document_start',array()), 587f8369d7dSTobias Sarnowski array('p_open',array()), 588f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 589f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')), 590f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 591f8369d7dSTobias Sarnowski array('p_close',array()), 592f8369d7dSTobias Sarnowski array('document_end',array()), 593f8369d7dSTobias Sarnowski ); 594f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 595f8369d7dSTobias Sarnowski } 596f8369d7dSTobias Sarnowski 597f8369d7dSTobias Sarnowski function testMediaInternalTitle() { 598f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 599f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100|Some Image}} Bar'); 600f8369d7dSTobias Sarnowski $calls = array ( 601f8369d7dSTobias Sarnowski array('document_start',array()), 602f8369d7dSTobias Sarnowski array('p_open',array()), 603f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 604f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')), 605f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 606f8369d7dSTobias Sarnowski array('p_close',array()), 607f8369d7dSTobias Sarnowski array('document_end',array()), 608f8369d7dSTobias Sarnowski ); 609f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 610f8369d7dSTobias Sarnowski } 611f8369d7dSTobias Sarnowski 612f8369d7dSTobias Sarnowski function testMediaExternal() { 613f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 614f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif}} Bar'); 615f8369d7dSTobias Sarnowski $calls = array ( 616f8369d7dSTobias Sarnowski array('document_start',array()), 617f8369d7dSTobias Sarnowski array('p_open',array()), 618f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 619f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')), 620f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 621f8369d7dSTobias Sarnowski array('p_close',array()), 622f8369d7dSTobias Sarnowski array('document_end',array()), 623f8369d7dSTobias Sarnowski ); 624f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 625f8369d7dSTobias Sarnowski } 626f8369d7dSTobias Sarnowski 627f8369d7dSTobias Sarnowski function testMediaExternalParams() { 628f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 629f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100nocache}} Bar'); 630f8369d7dSTobias Sarnowski $calls = array ( 631f8369d7dSTobias Sarnowski array('document_start',array()), 632f8369d7dSTobias Sarnowski array('p_open',array()), 633f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 634f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')), 635f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 636f8369d7dSTobias Sarnowski array('p_close',array()), 637f8369d7dSTobias Sarnowski array('document_end',array()), 638f8369d7dSTobias Sarnowski ); 639f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 640f8369d7dSTobias Sarnowski } 641f8369d7dSTobias Sarnowski 642f8369d7dSTobias Sarnowski function testMediaExternalTitle() { 643f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 644f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100|Some Image}} Bar'); 645f8369d7dSTobias Sarnowski $calls = array ( 646f8369d7dSTobias Sarnowski array('document_start',array()), 647f8369d7dSTobias Sarnowski array('p_open',array()), 648f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 649f8369d7dSTobias Sarnowski array('externalmedia', 650f8369d7dSTobias Sarnowski array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')), 651f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 652f8369d7dSTobias Sarnowski array('p_close',array()), 653f8369d7dSTobias Sarnowski array('document_end',array()), 654f8369d7dSTobias Sarnowski ); 655f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 656f8369d7dSTobias Sarnowski } 657f8369d7dSTobias Sarnowski 658f8369d7dSTobias Sarnowski function testMediaInInternalLink() { 659f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 660f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{img.gif?10x20nocache|Some Image}}]] Bar"); 661f8369d7dSTobias Sarnowski 662f8369d7dSTobias Sarnowski $image = array( 663f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 664f8369d7dSTobias Sarnowski 'src'=>'img.gif', 665f8369d7dSTobias Sarnowski 'title'=>'Some Image', 666f8369d7dSTobias Sarnowski 'align'=>NULL, 667f8369d7dSTobias Sarnowski 'width'=>10, 668f8369d7dSTobias Sarnowski 'height'=>20, 669f8369d7dSTobias Sarnowski 'cache'=>'nocache', 670f8369d7dSTobias Sarnowski 'linking'=>'details', 671f8369d7dSTobias Sarnowski ); 672f8369d7dSTobias Sarnowski 673f8369d7dSTobias Sarnowski $calls = array ( 674f8369d7dSTobias Sarnowski array('document_start',array()), 675f8369d7dSTobias Sarnowski array('p_open',array()), 676f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 677f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 678f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 679f8369d7dSTobias Sarnowski array('p_close',array()), 680f8369d7dSTobias Sarnowski array('document_end',array()), 681f8369d7dSTobias Sarnowski ); 682f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 683f8369d7dSTobias Sarnowski } 684f8369d7dSTobias Sarnowski 685f8369d7dSTobias Sarnowski function testMediaNoImageInInternalLink() { 686f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 687f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{foo.txt?10x20nocache|Some Image}}]] Bar"); 688f8369d7dSTobias Sarnowski 689f8369d7dSTobias Sarnowski $image = array( 690f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 691f8369d7dSTobias Sarnowski 'src'=>'foo.txt', 692f8369d7dSTobias Sarnowski 'title'=>'Some Image', 693f8369d7dSTobias Sarnowski 'align'=>NULL, 694f8369d7dSTobias Sarnowski 'width'=>10, 695f8369d7dSTobias Sarnowski 'height'=>20, 696f8369d7dSTobias Sarnowski 'cache'=>'nocache', 697f8369d7dSTobias Sarnowski 'linking'=>'details', 698f8369d7dSTobias Sarnowski ); 699f8369d7dSTobias Sarnowski 700f8369d7dSTobias Sarnowski $calls = array ( 701f8369d7dSTobias Sarnowski array('document_start',array()), 702f8369d7dSTobias Sarnowski array('p_open',array()), 703f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 704f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 705f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 706f8369d7dSTobias Sarnowski array('p_close',array()), 707f8369d7dSTobias Sarnowski array('document_end',array()), 708f8369d7dSTobias Sarnowski ); 709f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 710f8369d7dSTobias Sarnowski } 711f8369d7dSTobias Sarnowski 712f8369d7dSTobias Sarnowski function testMediaInEmailLink() { 713f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 714f8369d7dSTobias Sarnowski $this->P->parse("Foo [[foo@example.com|{{img.gif?10x20nocache|Some Image}}]] Bar"); 715f8369d7dSTobias Sarnowski 716f8369d7dSTobias Sarnowski $image = array( 717f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 718f8369d7dSTobias Sarnowski 'src'=>'img.gif', 719f8369d7dSTobias Sarnowski 'title'=>'Some Image', 720f8369d7dSTobias Sarnowski 'align'=>NULL, 721f8369d7dSTobias Sarnowski 'width'=>10, 722f8369d7dSTobias Sarnowski 'height'=>20, 723f8369d7dSTobias Sarnowski 'cache'=>'nocache', 724f8369d7dSTobias Sarnowski 'linking'=>'details', 725f8369d7dSTobias Sarnowski ); 726f8369d7dSTobias Sarnowski 727f8369d7dSTobias Sarnowski $calls = array ( 728f8369d7dSTobias Sarnowski array('document_start',array()), 729f8369d7dSTobias Sarnowski array('p_open',array()), 730f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 731f8369d7dSTobias Sarnowski array('emaillink',array('foo@example.com',$image)), 732f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 733f8369d7dSTobias Sarnowski array('p_close',array()), 734f8369d7dSTobias Sarnowski array('document_end',array()), 735f8369d7dSTobias Sarnowski ); 736f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 737f8369d7dSTobias Sarnowski } 738f8369d7dSTobias Sarnowski 739f8369d7dSTobias Sarnowski function testNestedMedia() { 740f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 741f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif|{{foo.gif|{{bar.gif|Bar}}}}}} Bar'); 742f8369d7dSTobias Sarnowski $calls = array ( 743f8369d7dSTobias Sarnowski array('document_start',array()), 744f8369d7dSTobias Sarnowski array('p_open',array()), 745f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 746f8369d7dSTobias Sarnowski array('internalmedia', 747f8369d7dSTobias Sarnowski array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')), 748f8369d7dSTobias Sarnowski array('cdata',array('}}}} Bar')), 749f8369d7dSTobias Sarnowski array('p_close',array()), 750f8369d7dSTobias Sarnowski array('document_end',array()), 751f8369d7dSTobias Sarnowski ); 752f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 753f8369d7dSTobias Sarnowski } 754f8369d7dSTobias Sarnowski 755f8369d7dSTobias Sarnowski} 756f8369d7dSTobias Sarnowski 757