| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FFMpeg\Tests; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use FFMpeg\FFMpeg; | 
					
						
							|  |  |  | use FFMpeg\Tests\TestCase; | 
					
						
							|  |  |  | use FFMpeg\FFProbe\DataMapping\StreamCollection; | 
					
						
							|  |  |  | use FFMpeg\FFProbe\DataMapping\Stream; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class FFMpegTest Extends TestCase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2013-11-29 11:14:49 +01:00
										 |  |  |      * @expectedException \FFMpeg\Exception\RuntimeException | 
					
						
							|  |  |  |      * @expectedExceptionMessage Unable to probe "/path/to/unknown/file". | 
					
						
							| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function testOpenInvalid() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($this->getFFMpegDriverMock(), $this->getFFProbeMock()); | 
					
						
							|  |  |  |         $ffmpeg->open('/path/to/unknown/file'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testOpenAudio() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $streams = $this->getStreamCollectionMock(); | 
					
						
							|  |  |  |         $streams->expects($this->once()) | 
					
						
							|  |  |  |             ->method('audios') | 
					
						
							|  |  |  |             ->will($this->returnValue(new StreamCollection(array(new Stream(array()))))); | 
					
						
							|  |  |  |         $streams->expects($this->once()) | 
					
						
							|  |  |  |             ->method('videos') | 
					
						
							|  |  |  |             ->will($this->returnValue(array())); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffprobe = $this->getFFProbeMock(); | 
					
						
							|  |  |  |         $ffprobe->expects($this->once()) | 
					
						
							|  |  |  |             ->method('streams') | 
					
						
							|  |  |  |             ->with(__FILE__) | 
					
						
							|  |  |  |             ->will($this->returnValue($streams)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($this->getFFMpegDriverMock(), $ffprobe); | 
					
						
							|  |  |  |         $this->assertInstanceOf('FFMpeg\Media\Audio', $ffmpeg->open(__FILE__)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testOpenVideo() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $streams = $this->getStreamCollectionMock(); | 
					
						
							|  |  |  |         $streams->expects($this->once()) | 
					
						
							|  |  |  |             ->method('videos') | 
					
						
							|  |  |  |             ->will($this->returnValue(new StreamCollection(array(new Stream(array()))))); | 
					
						
							|  |  |  |         $streams->expects($this->never()) | 
					
						
							|  |  |  |             ->method('audios'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffprobe = $this->getFFProbeMock(); | 
					
						
							|  |  |  |         $ffprobe->expects($this->once()) | 
					
						
							|  |  |  |             ->method('streams') | 
					
						
							|  |  |  |             ->with(__FILE__) | 
					
						
							|  |  |  |             ->will($this->returnValue($streams)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($this->getFFMpegDriverMock(), $ffprobe); | 
					
						
							|  |  |  |         $this->assertInstanceOf('FFMpeg\Media\Video', $ffmpeg->open(__FILE__)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2013-11-29 11:14:49 +01:00
										 |  |  |      * @expectedException \FFMpeg\Exception\InvalidArgumentException | 
					
						
							| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function testOpenUnknown() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $ffprobe = $this->getFFProbeMock(); | 
					
						
							|  |  |  |         $ffprobe->expects($this->once()) | 
					
						
							|  |  |  |             ->method('streams') | 
					
						
							|  |  |  |             ->with(__FILE__) | 
					
						
							|  |  |  |             ->will($this->returnValue(new StreamCollection())); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($this->getFFMpegDriverMock(), $ffprobe); | 
					
						
							|  |  |  |         $ffmpeg->open(__FILE__); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testCreateWithoutLoggerOrProbe() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->assertInstanceOf('FFMpeg\FFMpeg', FFMpeg::create()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testCreateWithLoggerAndProbe() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $logger = $this->getLoggerMock(); | 
					
						
							|  |  |  |         $ffprobe = $this->getFFProbeMock(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $ffmpeg = FFMpeg::create(array('timeout' => 42), $logger, $ffprobe); | 
					
						
							|  |  |  |         $this->assertInstanceOf('FFMpeg\FFMpeg', $ffmpeg); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->assertSame($logger, $ffmpeg->getFFMpegDriver()->getProcessRunner()->getLogger()); | 
					
						
							|  |  |  |         $this->assertSame($ffprobe, $ffmpeg->getFFProbe()); | 
					
						
							|  |  |  |         $this->assertSame(42, $ffmpeg->getFFMpegDriver()->getProcessBuilderFactory()->getTimeout()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testGetSetFFProbe() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $ffprobe = $this->getFFProbeMock(); | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($this->getFFMpegDriverMock(), $ffprobe); | 
					
						
							|  |  |  |         $this->assertSame($ffprobe, $ffmpeg->getFFProbe()); | 
					
						
							|  |  |  |         $anotherFFProbe = $this->getFFProbeMock(); | 
					
						
							|  |  |  |         $ffmpeg->setFFProbe($anotherFFProbe); | 
					
						
							|  |  |  |         $this->assertSame($anotherFFProbe, $ffmpeg->getFFProbe()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testGetSetDriver() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $driver = $this->getFFMpegDriverMock(); | 
					
						
							|  |  |  |         $ffmpeg = new FFMpeg($driver, $this->getFFProbeMock()); | 
					
						
							|  |  |  |         $this->assertSame($driver, $ffmpeg->getFFMpegDriver()); | 
					
						
							|  |  |  |         $anotherDriver = $this->getFFMpegDriverMock(); | 
					
						
							|  |  |  |         $ffmpeg->setFFMpegDriver($anotherDriver); | 
					
						
							|  |  |  |         $this->assertSame($anotherDriver, $ffmpeg->getFFMpegDriver()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |