scratch

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 114  →  ?path2? @ 115
/vendor/php-ffmpeg/php-ffmpeg/tests/Unit/FFProbe/OptionsTesterTest.php
@@ -0,0 +1,120 @@
<?php
 
namespace Tests\FFMpeg\Unit\FFProbe;
 
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use Tests\FFMpeg\Unit\TestCase;
use FFMpeg\FFProbe\OptionsTester;
 
class OptionsTesterTest extends TestCase
{
/**
* @expectedException FFMpeg\Exception\RuntimeException
* @expectedExceptionMessage Your FFProbe version is too old and does not support `-help` option, please upgrade.
*/
public function testHasOptionWithOldFFProbe()
{
$cache = $this->getCacheMock();
 
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->once())
->method('command')
->with(array('-help', '-loglevel', 'quiet'))
->will($this->throwException(new ExecutionFailureException('Failed to execute')));
 
$tester = new OptionsTester($ffprobe, $cache);
$tester->has('-print_format');
}
 
/**
* @dataProvider provideOptions
*/
public function testHasOptionWithCacheEmpty($isPresent, $data, $optionName)
{
$cache = $this->getCacheMock();
 
$cache->expects($this->never())
->method('fetch');
 
$cache->expects($this->exactly(2))
->method('contains')
->will($this->returnValue(false));
 
$cache->expects($this->exactly(2))
->method('save');
 
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->once())
->method('command')
->with(array('-help', '-loglevel', 'quiet'))
->will($this->returnValue($data));
 
$tester = new OptionsTester($ffprobe, $cache);
$this->assertTrue($isPresent === $tester->has($optionName));
}
 
public function provideOptions()
{
$data = file_get_contents(__DIR__ . '/../../fixtures/ffprobe/help.raw');
 
return array(
array(true, $data, '-print_format'),
array(false, $data, '-another_print_format'),
);
}
 
/**
* @dataProvider provideOptions
*/
public function testHasOptionWithHelpCacheLoaded($isPresent, $data, $optionName)
{
$cache = $this->getCacheMock();
 
$cache->expects($this->once())
->method('fetch')
->will($this->returnValue($data));
 
$cache->expects($this->at(0))
->method('contains')
->will($this->returnValue(false));
 
$cache->expects($this->at(1))
->method('contains')
->will($this->returnValue(true));
 
$cache->expects($this->once())
->method('save');
 
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->never())
->method('command');
 
$tester = new OptionsTester($ffprobe, $cache);
$this->assertTrue($isPresent === $tester->has($optionName));
}
 
/**
* @dataProvider provideOptions
*/
public function testHasOptionWithCacheFullyLoaded($isPresent, $data, $optionName)
{
$cache = $this->getCacheMock();
 
$cache->expects($this->once())
->method('fetch')
->with('option-' . $optionName)
->will($this->returnValue($isPresent));
 
$cache->expects($this->once())
->method('contains')
->with('option-' . $optionName)
->will($this->returnValue(true));
 
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->never())
->method('command');
 
$tester = new OptionsTester($ffprobe, $cache);
$this->assertTrue($isPresent === $tester->has($optionName));
}
}