*/
class TestOfDoku_Parser_Media extends TestOfDoku_Parser {
    function testVideoOGVExternal() {
        $file = 'http://some.where.far/away.ogv';
        $parser_response = p_get_instructions('{{' . $file . '}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('externalmedia',array($file,null,null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
        $Renderer = new Doku_Renderer_xhtml();
        $url = $Renderer->externalmedia($file,null,null,null,null,'cache','details',true);
        //print_r("url: " . $url);
        $video = ''."\n";
        $substr_start = strlen($url) - strlen($rest);
        $this->assertEquals($rest, substr($url, $substr_start));
    }
    /**
     * unknown extension of external media file
     */
    function testVideoVIDExternal() {
        $file = 'http://some.where.far/away.vid';
        $parser_response = p_get_instructions('{{' . $file . '}}');
        $calls = array(
            array('document_start', array()),
            array('p_open', array()),
            array('externalmedia', array($file, null, null, null, null, 'cache', 'details')),
            array('cdata', array(null)),
            array('p_close', array()),
            array('document_end', array()),
        );
        $this->assertEquals(array_map('stripbyteindex', $parser_response), $calls);
        $Renderer = new Doku_Renderer_xhtml();
        $url = $Renderer->externalmedia($file, null, null, null, null, 'cache', 'details', true);
        // work around random token
        $a_first_part = '';
        $substr_start = 0;
        $substr_len = strlen($a_first_part);
        $this->assertEquals($a_first_part, substr($url, $substr_start, $substr_len));
        $substr_start = strpos($url, '&media', $substr_start + $substr_len);
        $this->assertNotSame(false, $substr_start, 'Substring not found.');
        $substr_len = strlen($a_second_part);
        $this->assertEquals($a_second_part, substr($url, $substr_start, $substr_len));
        $rest = 'away.vid';
        $substr_start = strlen($url) - strlen($rest);
        $this->assertEquals($rest, substr($url, $substr_start));
    }
    function testVideoOGVInternal() {
        $file = 'wiki:kind_zu_katze.ogv';
        $parser_response = p_get_instructions('{{' . $file . '}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('internalmedia',array($file,null,null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
        $Renderer = new Doku_Renderer_xhtml();
        $url = $Renderer->externalmedia($file,null,null,null,null,'cache','details',true);
        $video = ''."\n";
        $substr_start = strlen($url) - strlen($rest);
        $this->assertEquals($rest, substr($url, $substr_start));
    }
    function testSimpleLinkText() {
        $file = 'wiki:dokuwiki-128.png';
        $parser_response = p_get_instructions('{{' . $file . '|This is a simple text.}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('internalmedia',array($file,'This is a simple text.',null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
    }
    function testLinkTextWithWavedBrackets_1() {
        $file = 'wiki:dokuwiki-128.png';
        $parser_response = p_get_instructions('{{' . $file . '|We got a { here.}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('internalmedia',array($file,'We got a { here.',null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
    }
    function testLinkTextWithWavedBrackets_2() {
        $file = 'wiki:dokuwiki-128.png';
        $parser_response = p_get_instructions('{{' . $file . '|We got a } here.}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('internalmedia',array($file,'We got a } here.',null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
    }
    function testLinkTextWithWavedBrackets_3() {
        $file = 'wiki:dokuwiki-128.png';
        $parser_response = p_get_instructions('{{' . $file . '|We got a { and a } here.}}');
        $calls = array (
            array('document_start',array()),
            array('p_open',array()),
            array('internalmedia',array($file,'We got a { and a } here.',null,null,null,'cache','details')),
            array('cdata',array(null)),
            array('p_close',array()),
            array('document_end',array()),
        );
        $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls);
    }
}