1
0
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:
Oliver Vogel
2024-03-23 08:08:41 +01:00
committed by GitHub
parent 67be90e570
commit 7f4ff15d51
207 changed files with 1073 additions and 1185 deletions

View File

@@ -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');
}
}

View File

@@ -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);
}
}