ffmpeg-mappable-media/tests/FFMpeg/Unit/FFProbe/OptionsTesterTest.php

133 lines
3.9 KiB
PHP
Raw Normal View History

2013-06-25 10:03:20 +02:00
<?php
namespace Tests\FFMpeg\Unit\FFProbe;
2013-06-25 10:03:20 +02:00
use FFMpeg\FFProbe\OptionsTester;
use Symfony\Component\Cache\CacheItem;
use Tests\FFMpeg\Unit\TestCase;
2013-06-25 10:03:20 +02:00
class OptionsTesterTest extends TestCase
{
public function testHasOptionWithOldFFProbe()
{
$this->expectException(
'\FFMpeg\Exception\RuntimeException',
'Your FFProbe version is too old and does not support `-help` option, please upgrade.'
);
$cache = $this->getCacheMock();
$executionFailerExceptionMock = $this->getMockBuilder('Alchemy\BinaryDriver\Exception\ExecutionFailureException')
->disableOriginalConstructor()
->getMock();
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->once())
->method('command')
->with(['-help', '-loglevel', 'quiet'])
->will($this->throwException($executionFailerExceptionMock));
$tester = new OptionsTester($ffprobe, $cache);
$tester->has('-print_format');
}
2013-06-25 10:03:20 +02:00
/**
* @dataProvider provideOptions
*/
public function testHasOptionWithCacheEmpty($isPresent, $data, $optionName)
{
$cache = $this->getCacheMock();
$cache->expects($this->exactly(2))
->method('getItem')
->will($this->returnValue(new CacheItem));
2013-06-25 10:03:20 +02:00
$cache->expects($this->exactly(2))
->method('hasItem')
2013-06-25 10:03:20 +02:00
->will($this->returnValue(false));
$cache->expects($this->exactly(2))
->method('save');
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->once())
->method('command')
->with(['-help', '-loglevel', 'quiet'])
2013-06-25 10:03:20 +02:00
->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');
2013-06-25 10:03:20 +02:00
return [
[true, $data, '-print_format'],
[false, $data, '-another_print_format'],
];
2013-06-25 10:03:20 +02:00
}
/**
* @dataProvider provideOptions
*/
public function testHasOptionWithHelpCacheLoaded($isPresent, $data, $optionName)
{
$cache = $this->getCacheMock();
$cacheItem = new CacheItem;
$cacheItem->set($data);
2013-06-25 10:03:20 +02:00
$cache->expects($this->exactly(2))
->method('getItem')
->willReturnOnConsecutiveCalls(
$this->returnValue($cacheItem),
$this->returnValue(new CacheItem)
);
2013-06-25 10:03:20 +02:00
$cache->expects($this->exactly(2))
->method('hasItem')
->willReturnOnConsecutiveCalls(
$this->returnValue(false),
$this->returnValue(true)
);
2013-06-25 10:03:20 +02:00
$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();
$cacheItem = new CacheItem();
$cacheItem->set($isPresent);
2013-06-25 10:03:20 +02:00
$cache->expects($this->once())
->method('getItem')
->with(md5('option-' . $optionName))
->will($this->returnValue($cacheItem));
2013-06-25 10:03:20 +02:00
$cache->expects($this->once())
->method('hasItem')
->with(md5('option-' . $optionName))
2013-06-25 10:03:20 +02:00
->will($this->returnValue(true));
$ffprobe = $this->getFFProbeDriverMock();
$ffprobe->expects($this->never())
->method('command');
$tester = new OptionsTester($ffprobe, $cache);
$this->assertTrue($isPresent === $tester->has($optionName));
}
}