mirror of
https://github.com/Intervention/image.git
synced 2025-01-17 12:18:14 +01:00
253 lines
10 KiB
PHP
253 lines
10 KiB
PHP
<?php
|
|
|
|
use Intervention\Image\Gd\Encoder as GdEncoder;
|
|
use Intervention\Image\Imagick\Encoder as ImagickEncoder;
|
|
|
|
class EncoderTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
public function tearDown()
|
|
{
|
|
Mockery::close();
|
|
}
|
|
|
|
public function testProcessJpegGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'jpg', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('image/jpeg; charset=binary', $this->getMime($encoder->result));
|
|
}
|
|
|
|
public function testProcessPngGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'png', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('image/png; charset=binary', $this->getMime($encoder->result));
|
|
}
|
|
|
|
public function testProcessGifGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'gif', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('image/gif; charset=binary', $this->getMime($encoder->result));
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Intervention\Image\Exception\NotSupportedException
|
|
*/
|
|
public function testProcessTiffGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$img = $encoder->process($image, 'tif', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Intervention\Image\Exception\NotSupportedException
|
|
*/
|
|
public function testProcessBmpGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$img = $encoder->process($image, 'bmp', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Intervention\Image\Exception\NotSupportedException
|
|
*/
|
|
public function testProcessIcoGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$img = $encoder->process($image, 'ico', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
}
|
|
|
|
/**
|
|
* @expectedException \Intervention\Image\Exception\NotSupportedException
|
|
*/
|
|
public function testProcessPsdGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$img = $encoder->process($image, 'psd', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
}
|
|
|
|
public function testProcessUnknownWithMimeGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->mime = 'image/jpeg';
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, null);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('image/jpeg; charset=binary', $this->getMime($encoder->result));
|
|
}
|
|
|
|
public function testProcessUnknownGd()
|
|
{
|
|
$core = imagecreatefromjpeg(__DIR__.'/images/test.jpg');
|
|
$encoder = new GdEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, null);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('image/jpeg; charset=binary', $this->getMime($encoder->result));
|
|
}
|
|
|
|
public function testProcessJpegImagick()
|
|
{
|
|
$core = $this->getImagickMock('jpeg');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'jpg', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-jpeg', $encoder->result);
|
|
}
|
|
|
|
public function testProcessPngImagick()
|
|
{
|
|
$core = $this->getImagickMock('png');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'png', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-png', $encoder->result);
|
|
}
|
|
|
|
public function testProcessGifImagick()
|
|
{
|
|
$core = $this->getImagickMock('gif');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'gif', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-gif', $encoder->result);
|
|
}
|
|
|
|
public function testProcessTiffImagick()
|
|
{
|
|
$core = $this->getImagickMock('tiff');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'tiff', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-tiff', $encoder->result);
|
|
}
|
|
|
|
public function testProcessBmpImagick()
|
|
{
|
|
$core = $this->getImagickMock('bmp');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'bmp', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-bmp', $encoder->result);
|
|
}
|
|
|
|
public function testProcessIcoImagick()
|
|
{
|
|
$core = $this->getImagickMock('ico');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'ico', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-ico', $encoder->result);
|
|
}
|
|
|
|
public function testProcessPsdImagick()
|
|
{
|
|
$core = $this->getImagickMock('psd');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, 'psd', 90);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-psd', $encoder->result);
|
|
}
|
|
|
|
public function testProcessUnknownWithMimeImagick()
|
|
{
|
|
$core = $this->getImagickMock('jpeg');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->mime = 'image/jpeg';
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, null);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-jpeg', $encoder->result);
|
|
}
|
|
|
|
public function testProcessUnknownImagick()
|
|
{
|
|
$core = $this->getImagickMock('jpeg');
|
|
$encoder = new ImagickEncoder;
|
|
$image = Mockery::mock('\Intervention\Image\Image');
|
|
$image->shouldReceive('getCore')->once()->andReturn($core);
|
|
$image->shouldReceive('setEncoded')->once()->andReturn($image);
|
|
$img = $encoder->process($image, null);
|
|
$this->assertInstanceOf('Intervention\Image\Image', $img);
|
|
$this->assertEquals('mock-jpeg', $encoder->result);
|
|
}
|
|
|
|
public function getImagickMock($type)
|
|
{
|
|
$imagick = Mockery::mock('Imagick');
|
|
$imagick->shouldReceive('setformat')->with($type)->once();
|
|
$imagick->shouldReceive('setimageformat')->once();
|
|
$imagick->shouldReceive('setcompression')->once();
|
|
$imagick->shouldReceive('setimagecompression')->once();
|
|
$imagick->shouldReceive('setcompressionquality');
|
|
$imagick->shouldReceive('setimagecompressionquality');
|
|
$imagick->shouldReceive('setimagebackgroundcolor');
|
|
$imagick->shouldReceive('setbackgroundcolor');
|
|
$imagick->shouldReceive('mergeimagelayers')->andReturn($imagick);
|
|
$imagick->shouldReceive('getimagesblob')->once()->andReturn(sprintf('mock-%s', $type));
|
|
return $imagick;
|
|
}
|
|
|
|
public function getMime($data)
|
|
{
|
|
$finfo = new finfo(FILEINFO_MIME);
|
|
return $finfo->buffer($data);
|
|
}
|
|
}
|