1f8369d7dSTobias Sarnowski<?php 2f8369d7dSTobias Sarnowskirequire_once 'parser.inc.php'; 3f8369d7dSTobias Sarnowski 49bda387aSLarsDW223/** 59bda387aSLarsDW223 * Tests for the implementation of link syntax 69bda387aSLarsDW223 * 79bda387aSLarsDW223 * @group parser_links 89bda387aSLarsDW223*/ 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 2829bda387aSLarsDW223 function testInternalLinkCodeFollows() { 2839bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 2849bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 2859bda387aSLarsDW223 $calls = array ( 2869bda387aSLarsDW223 array('document_start',array()), 2879bda387aSLarsDW223 array('p_open',array()), 2889bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 2899bda387aSLarsDW223 array('internallink',array('wiki:internal:link','Test')), 2909bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 2919bda387aSLarsDW223 array('p_close',array()), 2929bda387aSLarsDW223 array('document_end',array()), 2939bda387aSLarsDW223 ); 2949bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 2959bda387aSLarsDW223 } 2969bda387aSLarsDW223 2979bda387aSLarsDW223 function testInternalLinkCodeFollows2() { 2989bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 2999bda387aSLarsDW223 $this->P->parse("Foo [[wiki:internal:link|[Square brackets in title] Test]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 3009bda387aSLarsDW223 $calls = array ( 3019bda387aSLarsDW223 array('document_start',array()), 3029bda387aSLarsDW223 array('p_open',array()), 3039bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 3049bda387aSLarsDW223 array('internallink',array('wiki:internal:link','[Square brackets in title] Test')), 3059bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 3069bda387aSLarsDW223 array('p_close',array()), 3079bda387aSLarsDW223 array('document_end',array()), 3089bda387aSLarsDW223 ); 3099bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 3109bda387aSLarsDW223 } 3119bda387aSLarsDW223 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 3279bda387aSLarsDW223 function testExternalInInternalLink2() { 3289bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 3299bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar"); 3309bda387aSLarsDW223 $calls = array ( 3319bda387aSLarsDW223 array('document_start',array()), 3329bda387aSLarsDW223 array('p_open',array()), 3339bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 3349bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 3359bda387aSLarsDW223 array('cdata',array(' Bar')), 3369bda387aSLarsDW223 array('p_close',array()), 3379bda387aSLarsDW223 array('document_end',array()), 3389bda387aSLarsDW223 ); 3399bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 3409bda387aSLarsDW223 } 3419bda387aSLarsDW223 3429bda387aSLarsDW223 function testExternalInInternalLink2CodeFollows() { 3439bda387aSLarsDW223 $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 3449bda387aSLarsDW223 $this->P->parse("Foo [[http://www.google.com?test[]=squarebracketsinurl|Google]] Bar <code>command [arg1 [arg2 [arg3]]]</code>"); 3459bda387aSLarsDW223 $calls = array ( 3469bda387aSLarsDW223 array('document_start',array()), 3479bda387aSLarsDW223 array('p_open',array()), 3489bda387aSLarsDW223 array('cdata',array("\n".'Foo ')), 3499bda387aSLarsDW223 array('externallink',array('http://www.google.com?test[]=squarebracketsinurl','Google')), 3509bda387aSLarsDW223 array('cdata',array(' Bar <code>command [arg1 [arg2 [arg3]]]</code>')), 3519bda387aSLarsDW223 array('p_close',array()), 3529bda387aSLarsDW223 array('document_end',array()), 3539bda387aSLarsDW223 ); 3549bda387aSLarsDW223 $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 3559bda387aSLarsDW223 } 3569bda387aSLarsDW223 357*2e3f2c78SAndreas Gohr function testTwoInternalLinks() { 358*2e3f2c78SAndreas Gohr $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 359*2e3f2c78SAndreas Gohr $this->P->parse("Foo [[foo:bar|one]] and [[bar:foo|two]] Bar"); 360*2e3f2c78SAndreas Gohr $calls = array ( 361*2e3f2c78SAndreas Gohr array('document_start',array()), 362*2e3f2c78SAndreas Gohr array('p_open',array()), 363*2e3f2c78SAndreas Gohr array('cdata',array("\n".'Foo ')), 364*2e3f2c78SAndreas Gohr array('internallink',array('foo:bar','one')), 365*2e3f2c78SAndreas Gohr array('cdata',array(' and ')), 366*2e3f2c78SAndreas Gohr array('internallink',array('bar:foo','two')), 367*2e3f2c78SAndreas Gohr array('cdata',array(' Bar')), 368*2e3f2c78SAndreas Gohr array('p_close',array()), 369*2e3f2c78SAndreas Gohr array('document_end',array()), 370*2e3f2c78SAndreas Gohr ); 371*2e3f2c78SAndreas Gohr $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 372*2e3f2c78SAndreas Gohr } 373*2e3f2c78SAndreas Gohr 374*2e3f2c78SAndreas Gohr 375f8369d7dSTobias Sarnowski function testInterwikiLink() { 376f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 377f8369d7dSTobias Sarnowski $this->P->parse("Foo [[iw>somepage|Some Page]] Bar"); 378f8369d7dSTobias Sarnowski $calls = array ( 379f8369d7dSTobias Sarnowski array('document_start',array()), 380f8369d7dSTobias Sarnowski array('p_open',array()), 381f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 382f8369d7dSTobias Sarnowski array('interwikilink',array('iw>somepage','Some Page','iw','somepage')), 383f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 384f8369d7dSTobias Sarnowski array('p_close',array()), 385f8369d7dSTobias Sarnowski array('document_end',array()), 386f8369d7dSTobias Sarnowski ); 387f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 388f8369d7dSTobias Sarnowski } 389f8369d7dSTobias Sarnowski 390f8369d7dSTobias Sarnowski function testInterwikiLinkCase() { 391f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 392f8369d7dSTobias Sarnowski $this->P->parse("Foo [[IW>somepage|Some Page]] Bar"); 393f8369d7dSTobias Sarnowski $calls = array ( 394f8369d7dSTobias Sarnowski array('document_start',array()), 395f8369d7dSTobias Sarnowski array('p_open',array()), 396f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 397f8369d7dSTobias Sarnowski array('interwikilink',array('IW>somepage','Some Page','iw','somepage')), 398f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 399f8369d7dSTobias Sarnowski array('p_close',array()), 400f8369d7dSTobias Sarnowski array('document_end',array()), 401f8369d7dSTobias Sarnowski ); 402f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 403f8369d7dSTobias Sarnowski } 404f8369d7dSTobias Sarnowski 405f8369d7dSTobias Sarnowski function testInterwikiPedia() { 406f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 407f8369d7dSTobias Sarnowski $this->P->parse("Foo [[wp>Callback_(computer_science)|callbacks]] Bar"); 408f8369d7dSTobias Sarnowski $calls = array ( 409f8369d7dSTobias Sarnowski array('document_start',array()), 410f8369d7dSTobias Sarnowski array('p_open',array()), 411f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 412f8369d7dSTobias Sarnowski array('interwikilink',array('wp>Callback_(computer_science)','callbacks','wp','Callback_(computer_science)')), 413f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 414f8369d7dSTobias Sarnowski array('p_close',array()), 415f8369d7dSTobias Sarnowski array('document_end',array()), 416f8369d7dSTobias Sarnowski ); 417f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 418f8369d7dSTobias Sarnowski } 419f8369d7dSTobias Sarnowski 420f8369d7dSTobias Sarnowski function testCamelCase() { 421f8369d7dSTobias Sarnowski $this->P->addMode('camelcaselink',new Doku_Parser_Mode_CamelCaseLink()); 422f8369d7dSTobias Sarnowski $this->P->parse("Foo FooBar Bar"); 423f8369d7dSTobias Sarnowski $calls = array ( 424f8369d7dSTobias Sarnowski array('document_start',array()), 425f8369d7dSTobias Sarnowski array('p_open',array()), 426f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 427f8369d7dSTobias Sarnowski array('camelcaselink',array('FooBar')), 428f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 429f8369d7dSTobias Sarnowski array('p_close',array()), 430f8369d7dSTobias Sarnowski array('document_end',array()), 431f8369d7dSTobias Sarnowski ); 432f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 433f8369d7dSTobias Sarnowski } 434f8369d7dSTobias Sarnowski 435f8369d7dSTobias Sarnowski function testFileLink() { 436f8369d7dSTobias Sarnowski $this->P->addMode('filelink',new Doku_Parser_Mode_FileLink()); 437f8369d7dSTobias Sarnowski $this->P->parse('Foo file://temp/file.txt Bar'); 438f8369d7dSTobias Sarnowski $calls = array ( 439f8369d7dSTobias Sarnowski array('document_start',array()), 440f8369d7dSTobias Sarnowski array('p_open',array()), 441f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 442f8369d7dSTobias Sarnowski array('filelink',array('file://temp/file.txt ',NULL)), 443f8369d7dSTobias Sarnowski array('cdata',array('Bar')), 444f8369d7dSTobias Sarnowski array('p_close',array()), 445f8369d7dSTobias Sarnowski array('document_end',array()), 446f8369d7dSTobias Sarnowski ); 447f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 448f8369d7dSTobias Sarnowski } 449f8369d7dSTobias Sarnowski 450f8369d7dSTobias Sarnowski function testFileLinkInternal() { 451f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 452f8369d7dSTobias Sarnowski $this->P->parse('Foo [[file://temp/file.txt|Some File]] Bar'); 453f8369d7dSTobias Sarnowski $calls = array ( 454f8369d7dSTobias Sarnowski array('document_start',array()), 455f8369d7dSTobias Sarnowski array('p_open',array()), 456f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 457f8369d7dSTobias Sarnowski array('externallink',array('file://temp/file.txt','Some File')), 458f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 459f8369d7dSTobias Sarnowski array('p_close',array()), 460f8369d7dSTobias Sarnowski array('document_end',array()), 461f8369d7dSTobias Sarnowski ); 462f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 463f8369d7dSTobias Sarnowski } 464f8369d7dSTobias Sarnowski 465f8369d7dSTobias Sarnowski function testWindowsShareLink() { 466f8369d7dSTobias Sarnowski $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); 467f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share Bar'); 468f8369d7dSTobias Sarnowski $calls = array ( 469f8369d7dSTobias Sarnowski array('document_start',array()), 470f8369d7dSTobias Sarnowski array('p_open',array()), 471f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 472f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share',NULL)), 473f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 474f8369d7dSTobias Sarnowski array('p_close',array()), 475f8369d7dSTobias Sarnowski array('document_end',array()), 476f8369d7dSTobias Sarnowski ); 477f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 478f8369d7dSTobias Sarnowski } 479f8369d7dSTobias Sarnowski 480f8369d7dSTobias Sarnowski function testWindowsShareLinkHyphen() { 481f8369d7dSTobias Sarnowski $this->P->addMode('windowssharelink',new Doku_Parser_Mode_WindowsShareLink()); 482f8369d7dSTobias Sarnowski $this->P->parse('Foo \\\server\share-hyphen Bar'); 483f8369d7dSTobias Sarnowski $calls = array ( 484f8369d7dSTobias Sarnowski array('document_start',array()), 485f8369d7dSTobias Sarnowski array('p_open',array()), 486f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 487f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share-hyphen',NULL)), 488f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 489f8369d7dSTobias Sarnowski array('p_close',array()), 490f8369d7dSTobias Sarnowski array('document_end',array()), 491f8369d7dSTobias Sarnowski ); 492f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 493f8369d7dSTobias Sarnowski } 494f8369d7dSTobias Sarnowski 495f8369d7dSTobias Sarnowski function testWindowsShareLinkInternal() { 496f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 497f8369d7dSTobias Sarnowski $this->P->parse('Foo [[\\\server\share|My Documents]] Bar'); 498f8369d7dSTobias Sarnowski $calls = array ( 499f8369d7dSTobias Sarnowski array('document_start',array()), 500f8369d7dSTobias Sarnowski array('p_open',array()), 501f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 502f8369d7dSTobias Sarnowski array('windowssharelink',array('\\\server\share','My Documents')), 503f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 504f8369d7dSTobias Sarnowski array('p_close',array()), 505f8369d7dSTobias Sarnowski array('document_end',array()), 506f8369d7dSTobias Sarnowski ); 507f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 508f8369d7dSTobias Sarnowski } 509f8369d7dSTobias Sarnowski 510f8369d7dSTobias Sarnowski function testMediaInternal() { 511f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 512f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif}} Bar'); 513f8369d7dSTobias Sarnowski $calls = array ( 514f8369d7dSTobias Sarnowski array('document_start',array()), 515f8369d7dSTobias Sarnowski array('p_open',array()), 516f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 517f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','details')), 518f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 519f8369d7dSTobias Sarnowski array('p_close',array()), 520f8369d7dSTobias Sarnowski array('document_end',array()), 521f8369d7dSTobias Sarnowski ); 522f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 523f8369d7dSTobias Sarnowski } 524f8369d7dSTobias Sarnowski 525f8369d7dSTobias Sarnowski function testMediaInternalLinkOnly() { 526f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 527f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?linkonly}} Bar'); 528f8369d7dSTobias Sarnowski $calls = array ( 529f8369d7dSTobias Sarnowski array('document_start',array()), 530f8369d7dSTobias Sarnowski array('p_open',array()), 531f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 532f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,NULL,NULL,'cache','linkonly')), 533f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 534f8369d7dSTobias Sarnowski array('p_close',array()), 535f8369d7dSTobias Sarnowski array('document_end',array()), 536f8369d7dSTobias Sarnowski ); 537f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 538f8369d7dSTobias Sarnowski } 539f8369d7dSTobias Sarnowski 540f8369d7dSTobias Sarnowski function testMediaNotImage() { 541f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 542f8369d7dSTobias Sarnowski $this->P->parse('Foo {{foo.txt?10x10|Some File}} Bar'); 543f8369d7dSTobias Sarnowski $calls = array ( 544f8369d7dSTobias Sarnowski array('document_start',array()), 545f8369d7dSTobias Sarnowski array('p_open',array()), 546f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 547f8369d7dSTobias Sarnowski array('internalmedia',array('foo.txt','Some File',null,10,10,'cache','details')), 548f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 549f8369d7dSTobias Sarnowski array('p_close',array()), 550f8369d7dSTobias Sarnowski array('document_end',array()), 551f8369d7dSTobias Sarnowski ); 552f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 553f8369d7dSTobias Sarnowski } 554f8369d7dSTobias Sarnowski 555f8369d7dSTobias Sarnowski function testMediaInternalLAlign() { 556f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 557f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif }} Bar'); 558f8369d7dSTobias Sarnowski $calls = array ( 559f8369d7dSTobias Sarnowski array('document_start',array()), 560f8369d7dSTobias Sarnowski array('p_open',array()), 561f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 562f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'left',NULL,NULL,'cache','details')), 563f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 564f8369d7dSTobias Sarnowski array('p_close',array()), 565f8369d7dSTobias Sarnowski array('document_end',array()), 566f8369d7dSTobias Sarnowski ); 567f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 568f8369d7dSTobias Sarnowski } 569f8369d7dSTobias Sarnowski 570f8369d7dSTobias Sarnowski function testMediaInternalRAlign() { 571f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 572f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif}} Bar'); 573f8369d7dSTobias Sarnowski $calls = array ( 574f8369d7dSTobias Sarnowski array('document_start',array()), 575f8369d7dSTobias Sarnowski array('p_open',array()), 576f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 577f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'right',NULL,NULL,'cache','details')), 578f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 579f8369d7dSTobias Sarnowski array('p_close',array()), 580f8369d7dSTobias Sarnowski array('document_end',array()), 581f8369d7dSTobias Sarnowski ); 582f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 583f8369d7dSTobias Sarnowski } 584f8369d7dSTobias Sarnowski 585f8369d7dSTobias Sarnowski function testMediaInternalCenter() { 586f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 587f8369d7dSTobias Sarnowski $this->P->parse('Foo {{ img.gif }} Bar'); 588f8369d7dSTobias Sarnowski $calls = array ( 589f8369d7dSTobias Sarnowski array('document_start',array()), 590f8369d7dSTobias Sarnowski array('p_open',array()), 591f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 592f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,'center',NULL,NULL,'cache','details')), 593f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 594f8369d7dSTobias Sarnowski array('p_close',array()), 595f8369d7dSTobias Sarnowski array('document_end',array()), 596f8369d7dSTobias Sarnowski ); 597f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 598f8369d7dSTobias Sarnowski } 599f8369d7dSTobias Sarnowski 600f8369d7dSTobias Sarnowski function testMediaInternalParams() { 601f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 602f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100nocache}} Bar'); 603f8369d7dSTobias Sarnowski $calls = array ( 604f8369d7dSTobias Sarnowski array('document_start',array()), 605f8369d7dSTobias Sarnowski array('p_open',array()), 606f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 607f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif',NULL,NULL,'50','100','nocache','details')), 608f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 609f8369d7dSTobias Sarnowski array('p_close',array()), 610f8369d7dSTobias Sarnowski array('document_end',array()), 611f8369d7dSTobias Sarnowski ); 612f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 613f8369d7dSTobias Sarnowski } 614f8369d7dSTobias Sarnowski 615f8369d7dSTobias Sarnowski function testMediaInternalTitle() { 616f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 617f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif?50x100|Some Image}} Bar'); 618f8369d7dSTobias Sarnowski $calls = array ( 619f8369d7dSTobias Sarnowski array('document_start',array()), 620f8369d7dSTobias Sarnowski array('p_open',array()), 621f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 622f8369d7dSTobias Sarnowski array('internalmedia',array('img.gif','Some Image',NULL,'50','100','cache','details')), 623f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 624f8369d7dSTobias Sarnowski array('p_close',array()), 625f8369d7dSTobias Sarnowski array('document_end',array()), 626f8369d7dSTobias Sarnowski ); 627f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 628f8369d7dSTobias Sarnowski } 629f8369d7dSTobias Sarnowski 630f8369d7dSTobias Sarnowski function testMediaExternal() { 631f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 632f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif}} Bar'); 633f8369d7dSTobias Sarnowski $calls = array ( 634f8369d7dSTobias Sarnowski array('document_start',array()), 635f8369d7dSTobias Sarnowski array('p_open',array()), 636f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 637f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,NULL,NULL,'cache','details')), 638f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 639f8369d7dSTobias Sarnowski array('p_close',array()), 640f8369d7dSTobias Sarnowski array('document_end',array()), 641f8369d7dSTobias Sarnowski ); 642f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 643f8369d7dSTobias Sarnowski } 644f8369d7dSTobias Sarnowski 645f8369d7dSTobias Sarnowski function testMediaExternalParams() { 646f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 647f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100nocache}} Bar'); 648f8369d7dSTobias Sarnowski $calls = array ( 649f8369d7dSTobias Sarnowski array('document_start',array()), 650f8369d7dSTobias Sarnowski array('p_open',array()), 651f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 652f8369d7dSTobias Sarnowski array('externalmedia',array('http://www.google.com/img.gif',NULL,NULL,'50','100','nocache','details')), 653f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 654f8369d7dSTobias Sarnowski array('p_close',array()), 655f8369d7dSTobias Sarnowski array('document_end',array()), 656f8369d7dSTobias Sarnowski ); 657f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 658f8369d7dSTobias Sarnowski } 659f8369d7dSTobias Sarnowski 660f8369d7dSTobias Sarnowski function testMediaExternalTitle() { 661f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 662f8369d7dSTobias Sarnowski $this->P->parse('Foo {{http://www.google.com/img.gif?50x100|Some Image}} Bar'); 663f8369d7dSTobias Sarnowski $calls = array ( 664f8369d7dSTobias Sarnowski array('document_start',array()), 665f8369d7dSTobias Sarnowski array('p_open',array()), 666f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 667f8369d7dSTobias Sarnowski array('externalmedia', 668f8369d7dSTobias Sarnowski array('http://www.google.com/img.gif','Some Image',NULL,'50','100','cache','details')), 669f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 670f8369d7dSTobias Sarnowski array('p_close',array()), 671f8369d7dSTobias Sarnowski array('document_end',array()), 672f8369d7dSTobias Sarnowski ); 673f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 674f8369d7dSTobias Sarnowski } 675f8369d7dSTobias Sarnowski 676f8369d7dSTobias Sarnowski function testMediaInInternalLink() { 677f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 678f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{img.gif?10x20nocache|Some Image}}]] Bar"); 679f8369d7dSTobias Sarnowski 680f8369d7dSTobias Sarnowski $image = array( 681f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 682f8369d7dSTobias Sarnowski 'src'=>'img.gif', 683f8369d7dSTobias Sarnowski 'title'=>'Some Image', 684f8369d7dSTobias Sarnowski 'align'=>NULL, 685f8369d7dSTobias Sarnowski 'width'=>10, 686f8369d7dSTobias Sarnowski 'height'=>20, 687f8369d7dSTobias Sarnowski 'cache'=>'nocache', 688f8369d7dSTobias Sarnowski 'linking'=>'details', 689f8369d7dSTobias Sarnowski ); 690f8369d7dSTobias Sarnowski 691f8369d7dSTobias Sarnowski $calls = array ( 692f8369d7dSTobias Sarnowski array('document_start',array()), 693f8369d7dSTobias Sarnowski array('p_open',array()), 694f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 695f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 696f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 697f8369d7dSTobias Sarnowski array('p_close',array()), 698f8369d7dSTobias Sarnowski array('document_end',array()), 699f8369d7dSTobias Sarnowski ); 700f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 701f8369d7dSTobias Sarnowski } 702f8369d7dSTobias Sarnowski 703f8369d7dSTobias Sarnowski function testMediaNoImageInInternalLink() { 704f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 705f8369d7dSTobias Sarnowski $this->P->parse("Foo [[x:1:y:foo_bar:z|{{foo.txt?10x20nocache|Some Image}}]] Bar"); 706f8369d7dSTobias Sarnowski 707f8369d7dSTobias Sarnowski $image = array( 708f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 709f8369d7dSTobias Sarnowski 'src'=>'foo.txt', 710f8369d7dSTobias Sarnowski 'title'=>'Some Image', 711f8369d7dSTobias Sarnowski 'align'=>NULL, 712f8369d7dSTobias Sarnowski 'width'=>10, 713f8369d7dSTobias Sarnowski 'height'=>20, 714f8369d7dSTobias Sarnowski 'cache'=>'nocache', 715f8369d7dSTobias Sarnowski 'linking'=>'details', 716f8369d7dSTobias Sarnowski ); 717f8369d7dSTobias Sarnowski 718f8369d7dSTobias Sarnowski $calls = array ( 719f8369d7dSTobias Sarnowski array('document_start',array()), 720f8369d7dSTobias Sarnowski array('p_open',array()), 721f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 722f8369d7dSTobias Sarnowski array('internallink',array('x:1:y:foo_bar:z',$image)), 723f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 724f8369d7dSTobias Sarnowski array('p_close',array()), 725f8369d7dSTobias Sarnowski array('document_end',array()), 726f8369d7dSTobias Sarnowski ); 727f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 728f8369d7dSTobias Sarnowski } 729f8369d7dSTobias Sarnowski 730f8369d7dSTobias Sarnowski function testMediaInEmailLink() { 731f8369d7dSTobias Sarnowski $this->P->addMode('internallink',new Doku_Parser_Mode_InternalLink()); 732f8369d7dSTobias Sarnowski $this->P->parse("Foo [[foo@example.com|{{img.gif?10x20nocache|Some Image}}]] Bar"); 733f8369d7dSTobias Sarnowski 734f8369d7dSTobias Sarnowski $image = array( 735f8369d7dSTobias Sarnowski 'type'=>'internalmedia', 736f8369d7dSTobias Sarnowski 'src'=>'img.gif', 737f8369d7dSTobias Sarnowski 'title'=>'Some Image', 738f8369d7dSTobias Sarnowski 'align'=>NULL, 739f8369d7dSTobias Sarnowski 'width'=>10, 740f8369d7dSTobias Sarnowski 'height'=>20, 741f8369d7dSTobias Sarnowski 'cache'=>'nocache', 742f8369d7dSTobias Sarnowski 'linking'=>'details', 743f8369d7dSTobias Sarnowski ); 744f8369d7dSTobias Sarnowski 745f8369d7dSTobias Sarnowski $calls = array ( 746f8369d7dSTobias Sarnowski array('document_start',array()), 747f8369d7dSTobias Sarnowski array('p_open',array()), 748f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 749f8369d7dSTobias Sarnowski array('emaillink',array('foo@example.com',$image)), 750f8369d7dSTobias Sarnowski array('cdata',array(' Bar')), 751f8369d7dSTobias Sarnowski array('p_close',array()), 752f8369d7dSTobias Sarnowski array('document_end',array()), 753f8369d7dSTobias Sarnowski ); 754f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 755f8369d7dSTobias Sarnowski } 756f8369d7dSTobias Sarnowski 757f8369d7dSTobias Sarnowski function testNestedMedia() { 758f8369d7dSTobias Sarnowski $this->P->addMode('media',new Doku_Parser_Mode_Media()); 759f8369d7dSTobias Sarnowski $this->P->parse('Foo {{img.gif|{{foo.gif|{{bar.gif|Bar}}}}}} Bar'); 760f8369d7dSTobias Sarnowski $calls = array ( 761f8369d7dSTobias Sarnowski array('document_start',array()), 762f8369d7dSTobias Sarnowski array('p_open',array()), 763f8369d7dSTobias Sarnowski array('cdata',array("\n".'Foo ')), 764f8369d7dSTobias Sarnowski array('internalmedia', 765f8369d7dSTobias Sarnowski array('img.gif','{{foo.gif|{{bar.gif|Bar',NULL,NULL,NULL,'cache','details')), 766f8369d7dSTobias Sarnowski array('cdata',array('}}}} Bar')), 767f8369d7dSTobias Sarnowski array('p_close',array()), 768f8369d7dSTobias Sarnowski array('document_end',array()), 769f8369d7dSTobias Sarnowski ); 770f8369d7dSTobias Sarnowski $this->assertEquals(array_map('stripByteIndex',$this->H->calls),$calls); 771f8369d7dSTobias Sarnowski } 772f8369d7dSTobias Sarnowski 773f8369d7dSTobias Sarnowski} 774f8369d7dSTobias Sarnowski 775