mirror of
https://github.com/Intervention/image.git
synced 2025-08-28 08:09:54 +02:00
Improve Driver Specializing Process (#1315)
Streamline driver specializing process of analyzers, modifers, encoders and decoders.
This commit is contained in:
@@ -15,65 +15,76 @@ use Intervention\Image\Encoders\PngEncoder;
|
||||
use Intervention\Image\Encoders\TiffEncoder;
|
||||
use Intervention\Image\Encoders\WebpEncoder;
|
||||
use Intervention\Image\Exceptions\EncoderException;
|
||||
use Intervention\Image\Interfaces\EncoderInterface;
|
||||
use Intervention\Image\Tests\BaseTestCase;
|
||||
use Mockery;
|
||||
|
||||
final class FileExtensionEncoderTest extends BaseTestCase
|
||||
{
|
||||
private function testEncoder(string $extension): EncoderInterface
|
||||
{
|
||||
$encoder = new class () extends FileExtensionEncoder
|
||||
{
|
||||
public function test($extension)
|
||||
{
|
||||
return $this->encoderByFileExtension($extension);
|
||||
}
|
||||
};
|
||||
|
||||
return $encoder->test($extension);
|
||||
}
|
||||
|
||||
public function testEncoderByFileExtension(): void
|
||||
{
|
||||
$encoder = Mockery::mock(FileExtensionEncoder::class);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
WebpEncoder::class,
|
||||
$encoder->encoderByFileExtension('webp')
|
||||
$this->testEncoder('webp')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
AvifEncoder::class,
|
||||
$encoder->encoderByFileExtension('avif')
|
||||
$this->testEncoder('avif')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
JpegEncoder::class,
|
||||
$encoder->encoderByFileExtension('jpeg')
|
||||
$this->testEncoder('jpeg')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
BmpEncoder::class,
|
||||
$encoder->encoderByFileExtension('bmp')
|
||||
$this->testEncoder('bmp')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
GifEncoder::class,
|
||||
$encoder->encoderByFileExtension('gif')
|
||||
$this->testEncoder('gif')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
PngEncoder::class,
|
||||
$encoder->encoderByFileExtension('png')
|
||||
$this->testEncoder('png')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
TiffEncoder::class,
|
||||
$encoder->encoderByFileExtension('tiff')
|
||||
$this->testEncoder('tiff')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
Jpeg2000Encoder::class,
|
||||
$encoder->encoderByFileExtension('jp2')
|
||||
$this->testEncoder('jp2')
|
||||
);
|
||||
|
||||
$this->assertInstanceOf(
|
||||
HeicEncoder::class,
|
||||
$encoder->encoderByFileExtension('heic')
|
||||
$this->testEncoder('heic')
|
||||
);
|
||||
}
|
||||
|
||||
public function testEncoderByFileExtensionUnknown(): void
|
||||
{
|
||||
$encoder = Mockery::mock(FileExtensionEncoder::class);
|
||||
$this->expectException(EncoderException::class);
|
||||
$encoder->encoderByFileExtension('test');
|
||||
$this->testEncoder('test');
|
||||
}
|
||||
}
|
||||
|
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Intervention\Image\Tests\Unit\Encoders;
|
||||
|
||||
use Intervention\Image\EncodedImage;
|
||||
use Intervention\Image\Encoders\SpecializableEncoder;
|
||||
use Intervention\Image\Interfaces\ImageInterface;
|
||||
use Intervention\Image\Tests\BaseTestCase;
|
||||
use Mockery;
|
||||
|
||||
final class SpecializableEncoderTest extends BaseTestCase
|
||||
{
|
||||
public function testConstructorDefault(): void
|
||||
{
|
||||
$encoder = new class () extends SpecializableEncoder
|
||||
{
|
||||
};
|
||||
|
||||
$this->assertEquals(75, $encoder->quality);
|
||||
}
|
||||
|
||||
public function testConstructorList(): void
|
||||
{
|
||||
$encoder = new class (1) extends SpecializableEncoder
|
||||
{
|
||||
};
|
||||
|
||||
$this->assertEquals(1, $encoder->quality);
|
||||
}
|
||||
|
||||
public function testConstructorNamed(): void
|
||||
{
|
||||
$encoder = new class (quality: 1) extends SpecializableEncoder
|
||||
{
|
||||
};
|
||||
|
||||
$this->assertEquals(1, $encoder->quality);
|
||||
}
|
||||
|
||||
public function testEncode(): void
|
||||
{
|
||||
$encoder = Mockery::mock(SpecializableEncoder::class)->makePartial();
|
||||
$image = Mockery::mock(ImageInterface::class);
|
||||
$encoded = Mockery::mock(EncodedImage::class);
|
||||
$image->shouldReceive('encode')->andReturn($encoded);
|
||||
|
||||
$result = $encoder->encode($image);
|
||||
$this->assertInstanceOf(EncodedImage::class, $result);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user