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)); } }