1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-21 05:01:20 +02:00

Fix bug & add tests

This commit is contained in:
Oliver Vogel
2024-01-27 17:45:00 +01:00
parent 58ba4bb817
commit 6dcc450eee
3 changed files with 65 additions and 2 deletions

View File

@@ -86,7 +86,7 @@ abstract class AbstractDecoder extends DriverSpecialized implements DecoderInter
default => $this->buildFilePointer($path_or_data), // data
};
// extract exif data via file path
// extract exif data
$data = @exif_read_data($source, null, true);
if (is_resource($source)) {
fclose($source);

View File

@@ -41,6 +41,12 @@ trait CanDecodeGif
);
}
return new Image(new Driver(), $core);
// create image
$image = new Image(new Driver(), $core);
// set media type
$image->origin()->setMediaType('image/gif');
return $image;
}
}

View File

@@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
namespace Intervention\Image\Tests\Drivers\Gd\Traits;
use Intervention\Image\Drivers\Gd\Decoders\Traits\CanDecodeGif;
use Intervention\Image\Interfaces\ImageInterface;
use Intervention\Image\Tests\TestCase;
use Mockery;
class CanDecodeGifTest extends TestCase
{
public function testDecodeGifFromBinaryAnimation(): void
{
$decoder = Mockery::mock(new class () {
use CanDecodeGif;
})->makePartial();
$result = $decoder->decodeGif($this->getTestImageData('animation.gif'));
$this->assertInstanceOf(ImageInterface::class, $result);
$this->assertEquals('image/gif', $result->origin()->mediaType());
}
public function testDecodeGifFromBinaryStatic(): void
{
$decoder = Mockery::mock(new class () {
use CanDecodeGif;
})->makePartial();
$result = $decoder->decodeGif($this->getTestImageData('red.gif'));
$this->assertInstanceOf(ImageInterface::class, $result);
$this->assertEquals('image/gif', $result->origin()->mediaType());
}
public function testDecodeGifFromPathAnimation(): void
{
$decoder = Mockery::mock(new class () {
use CanDecodeGif;
})->makePartial();
$result = $decoder->decodeGif($this->getTestImagePath('animation.gif'));
$this->assertInstanceOf(ImageInterface::class, $result);
$this->assertEquals('image/gif', $result->origin()->mediaType());
}
public function testDecodeGifFromPathStatic(): void
{
$decoder = Mockery::mock(new class () {
use CanDecodeGif;
})->makePartial();
$result = $decoder->decodeGif($this->getTestImagePath('red.gif'));
$this->assertInstanceOf(ImageInterface::class, $result);
$this->assertEquals('image/gif', $result->origin()->mediaType());
}
}