Skip to content

Commit

Permalink
Add MediaTypeEncoderTest
Browse files Browse the repository at this point in the history
  • Loading branch information
olivervogel committed Apr 22, 2024
1 parent 86ab902 commit 59149a3
Showing 1 changed file with 30 additions and 91 deletions.
121 changes: 30 additions & 91 deletions tests/Unit/Encoders/MediaTypeEncoderTest.php
Expand Up @@ -18,13 +18,19 @@
use Intervention\Image\Interfaces\EncoderInterface;
use Intervention\Image\MediaType;
use Intervention\Image\Tests\BaseTestCase;
use PHPUnit\Framework\Attributes\DataProvider;

final class MediaTypeEncoderTest extends BaseTestCase
{
private function testEncoder(string|MediaType $mediaType): EncoderInterface
private function testEncoder(string|MediaType $mediaType, array $options = []): EncoderInterface
{
$encoder = new class () extends MediaTypeEncoder
$encoder = new class ($mediaType, ...$options) extends MediaTypeEncoder
{
public function __construct($mediaType, ...$options)
{
parent::__construct($mediaType, ...$options);
}

public function test($mediaType)
{
return $this->encoderByMediaType($mediaType);
Expand All @@ -34,102 +40,35 @@ public function test($mediaType)
return $encoder->test($mediaType);
}

public function testEncoderByFileExtensionString(): void
{
$this->assertInstanceOf(
WebpEncoder::class,
$this->testEncoder('image/webp')
);

$this->assertInstanceOf(
AvifEncoder::class,
$this->testEncoder('image/avif')
);

$this->assertInstanceOf(
JpegEncoder::class,
$this->testEncoder('image/jpeg')
);

$this->assertInstanceOf(
BmpEncoder::class,
$this->testEncoder('image/bmp')
);

$this->assertInstanceOf(
GifEncoder::class,
$this->testEncoder('image/gif')
);

$this->assertInstanceOf(
PngEncoder::class,
$this->testEncoder('image/png')
);

$this->assertInstanceOf(
TiffEncoder::class,
$this->testEncoder('image/tiff')
);

$this->assertInstanceOf(
Jpeg2000Encoder::class,
$this->testEncoder('image/jp2')
);

#[DataProvider('targetEncoderProvider')]
public function testEncoderByFileExtensionString(
string $mediaType,
string $targetEncoderClassname,
array $options,
): void {
$this->assertInstanceOf(
HeicEncoder::class,
$this->testEncoder('image/heic')
$targetEncoderClassname,
$this->testEncoder($mediaType, $options)
);
}

public function testEncoderByFileExtensionEnumMember(): void
public static function targetEncoderProvider(): array
{
$this->assertInstanceOf(
WebpEncoder::class,
$this->testEncoder(MediaType::IMAGE_WEBP)
);

$this->assertInstanceOf(
AvifEncoder::class,
$this->testEncoder(MediaType::IMAGE_AVIF)
);

$this->assertInstanceOf(
JpegEncoder::class,
$this->testEncoder(MediaType::IMAGE_JPG)
);

$this->assertInstanceOf(
BmpEncoder::class,
$this->testEncoder(MediaType::IMAGE_BMP)
);

$this->assertInstanceOf(
GifEncoder::class,
$this->testEncoder(MediaType::IMAGE_GIF)
);

$this->assertInstanceOf(
PngEncoder::class,
$this->testEncoder(MediaType::IMAGE_PNG)
);

$this->assertInstanceOf(
TiffEncoder::class,
$this->testEncoder(MediaType::IMAGE_TIFF)
);

$this->assertInstanceOf(
Jpeg2000Encoder::class,
$this->testEncoder(MediaType::IMAGE_JP2)
);

$this->assertInstanceOf(
HeicEncoder::class,
$this->testEncoder(MediaType::IMAGE_HEIC)
);
return [
['image/webp', WebpEncoder::class, []],
['image/avif', AvifEncoder::class, []],
['image/jpeg', JpegEncoder::class, []],
['image/bmp', BmpEncoder::class, []],
['image/gif', GifEncoder::class, []],
['image/png', PngEncoder::class, []],
['image/png', PngEncoder::class, ['quality' => 10]],
['image/tiff', TiffEncoder::class, []],
['image/jp2', Jpeg2000Encoder::class, []],
['image/heic', HeicEncoder::class, []],
];
}


public function testEncoderByFileExtensionUnknown(): void
{
$this->expectException(EncoderException::class);
Expand Down

0 comments on commit 59149a3

Please sign in to comment.