ffmpeg-mappable-media/tests/FFMpeg/Tests/FFProbe/DataMapping/StreamTest.php

86 lines
2.5 KiB
PHP
Raw Normal View History

2013-06-25 10:03:20 +02:00
<?php
namespace FFMpeg\Tests\FFProbe\DataMapping;
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')),
);
}
/**
* @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
}