1<?php 2require_once 'parser.inc.php'; 3 4/** 5 * Tests for the implementation of audio and video files 6 * 7 * @author Michael Große <grosse@cosmocode.de> 8*/ 9class TestOfDoku_Parser_Media extends TestOfDoku_Parser { 10 11 function testVideoOGVExternal() { 12 $file = 'http://some.where.far/away.ogv'; 13 $parser_response = p_get_instructions('{{' . $file . '}}'); 14 15 $calls = array ( 16 array('document_start',array()), 17 array('p_open',array()), 18 array('externalmedia',array($file,null,null,null,null,'cache','details')), 19 array('cdata',array(null)), 20 array('p_close',array()), 21 array('document_end',array()), 22 ); 23 $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls); 24 25 $Renderer = new Doku_Renderer_xhtml(); 26 $url = $Renderer->externalmedia($file,null,null,null,null,'cache','details',true); 27 //print_r("url: " . $url); 28 $video = '<video class="media" width="320" height="240" controls="controls">'; 29 $this->assertEquals(substr($url,0,66),$video); 30 $source = '<source src="http://some.where.far/away.ogv" type="video/ogg" />'; 31 $this->assertEquals(substr($url,67,64),$source); 32 // work around random token 33 $a_first_part = '<a href="/./lib/exe/fetch.php?cache=&tok='; 34 $a_second_part = '&media=http%3A%2F%2Fsome.where.far%2Faway.ogv" class="media mediafile mf_ogv" title="http://some.where.far/away.ogv">'; 35 $this->assertEquals(substr($url,132,45),$a_first_part); 36 $this->assertEquals(substr($url,183,121),$a_second_part); 37 $rest = 'away.ogv</a></video>'."\n"; 38 $this->assertEquals(substr($url,304),$rest); 39 } 40 41 /** 42 * unknown extension of external media file 43 */ 44 function testVideoVIDExternal() { 45 $file = 'http://some.where.far/away.vid'; 46 $parser_response = p_get_instructions('{{' . $file . '}}'); 47 48 $calls = array( 49 array('document_start', array()), 50 array('p_open', array()), 51 array('externalmedia', array($file, null, null, null, null, 'cache', 'details')), 52 array('cdata', array(null)), 53 array('p_close', array()), 54 array('document_end', array()), 55 ); 56 $this->assertEquals(array_map('stripbyteindex', $parser_response), $calls); 57 58 $Renderer = new Doku_Renderer_xhtml(); 59 $url = $Renderer->externalmedia($file, null, null, null, null, 'cache', 'details', true); 60 // work around random token 61 $a_first_part = '<a href="/./lib/exe/fetch.php?tok='; 62 $a_second_part = '&media=http%3A%2F%2Fsome.where.far%2Faway.vid" class="media mediafile mf_vid" title="http://some.where.far/away.vid">'; 63 $this->assertEquals(substr($url,0,34),$a_first_part); 64 $this->assertEquals(substr($url,40,121),$a_second_part); 65 $rest = 'away.vid</a>'; 66 $this->assertEquals(substr($url,161),$rest); 67 } 68 69 70 function testVideoOGVInternal() { 71 $file = 'wiki:kind_zu_katze.ogv'; 72 $parser_response = p_get_instructions('{{' . $file . '}}'); 73 74 $calls = array ( 75 array('document_start',array()), 76 array('p_open',array()), 77 array('internalmedia',array($file,null,null,null,null,'cache','details')), 78 array('cdata',array(null)), 79 array('p_close',array()), 80 array('document_end',array()), 81 ); 82 $this->assertEquals(array_map('stripbyteindex',$parser_response),$calls); 83 84 $Renderer = new Doku_Renderer_xhtml(); 85 $url = $Renderer->externalmedia($file,null,null,null,null,'cache','details',true); 86 87 $video = '<video class="media" width="320" height="240" controls="controls" poster="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.png">'; 88 $this->assertEquals(substr($url,0,125),$video); 89 90 $source_webm = '<source src="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.webm" type="video/webm" />'; 91 $this->assertEquals(substr($url,126,85),$source_webm); 92 $source_ogv = '<source src="/./lib/exe/fetch.php?media=wiki:kind_zu_katze.ogv" type="video/ogg" />'; 93 $this->assertEquals(substr($url,212,83),$source_ogv); 94 95 $a_webm = '<a href="/./lib/exe/fetch.php?id=&cache=&media=wiki:kind_zu_katze.webm" class="media mediafile mf_webm" title="wiki:kind_zu_katze.webm (99.1 KB)">kind_zu_katze.webm</a>'; 96 $a_ogv = '<a href="/./lib/exe/fetch.php?id=&cache=&media=wiki:kind_zu_katze.ogv" class="media mediafile mf_ogv" title="wiki:kind_zu_katze.ogv (44.8 KB)">kind_zu_katze.ogv</a>'; 97 $this->assertEquals(substr($url,296,176),$a_webm); 98 $this->assertEquals(substr($url,472,172),$a_ogv); 99 100 $rest = '</video>'."\n"; 101 $this->assertEquals(substr($url,644),$rest); 102 } 103} 104