| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FFMpeg\Tests\FFProbe\DataMapping; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-04 19:00:43 +02:00
										 |  |  | use FFMpeg\Coordinate\Dimension; | 
					
						
							| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  | use FFMpeg\Tests\TestCase; | 
					
						
							|  |  |  | use FFMpeg\FFProbe\DataMapping\Stream; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StreamTest extends TestCase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider provideAudioCases | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testIsAudio($isAudio, $properties) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream($properties); | 
					
						
							|  |  |  |         $this->assertTrue($isAudio === $stream->isAudio()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function provideAudioCases() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |             array(true, array('codec_type' => 'audio')), | 
					
						
							|  |  |  |             array(false, array('codec_type' => 'video')), | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider provideVideoCases | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testIsVideo($isVideo, $properties) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream($properties); | 
					
						
							|  |  |  |         $this->assertTrue($isVideo === $stream->isVideo()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function provideVideoCases() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |             array(true, array('codec_type' => 'video')), | 
					
						
							|  |  |  |             array(false, array('codec_type' => 'audio')), | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-09-04 19:00:43 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @expectedException FFMpeg\Exception\LogicException | 
					
						
							|  |  |  |      * @expectedExceptionMessage Dimensions can only be retrieved from video streams. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testGetDimensionsFromAudio() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream(array('codec_type' => 'audio')); | 
					
						
							|  |  |  |         $stream->getDimensions(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testGetDimensionsFromVideo() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720)); | 
					
						
							|  |  |  |         $this->assertEquals(new Dimension(960, 720), $stream->getDimensions()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * @dataProvider provideInvalidPropertiesForDimensionsExtraction | 
					
						
							|  |  |  |      * @expectedException FFMpeg\Exception\RuntimeException | 
					
						
							|  |  |  |      * @expectedExceptionMessage Unable to extract dimensions. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function testUnableToGetDimensionsFromVideo($properties) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream(array('codec_type' => 'video', 'width' => 960)); | 
					
						
							|  |  |  |         $stream->getDimensions(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function provideInvalidPropertiesForDimensionsExtraction() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |             array('codec_type' => 'video', 'width' => 960), | 
					
						
							|  |  |  |             array('codec_type' => 'video', 'height' => 960), | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function testGetDimensionsFromVideoWithDisplayRatio() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720, 'sample_aspect_ratio' => '4:3', 'display_aspect_ratio' => '16:9')); | 
					
						
							|  |  |  |         $this->assertEquals(new Dimension(1280, 720), $stream->getDimensions()); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2013-06-25 10:03:20 +02:00
										 |  |  | } |