101 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace FFMpeg\Tests\FFProbe;
 | 
						|
 | 
						|
use FFMpeg\Tests\TestCase;
 | 
						|
use FFMpeg\FFProbe\OptionsTester;
 | 
						|
 | 
						|
class OptionsTesterTest extends TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @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));
 | 
						|
    }
 | 
						|
}
 |