From 60f3840b67606f13e6942a457667e9c016dce8c5 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Mon, 11 Nov 2024 10:44:15 +0100 Subject: [PATCH 01/10] Optimize code --- src/Drivers/Gd/Decoders/AbstractDecoder.php | 8 -------- src/Drivers/Gd/Frame.php | 6 ++++++ src/Drivers/Imagick/Frame.php | 6 ++++++ tests/Unit/Drivers/Gd/FrameTest.php | 4 ++-- tests/Unit/Drivers/Imagick/FrameTest.php | 8 ++++---- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/Drivers/Gd/Decoders/AbstractDecoder.php b/src/Drivers/Gd/Decoders/AbstractDecoder.php index 0ad9f1104..d585f4da3 100644 --- a/src/Drivers/Gd/Decoders/AbstractDecoder.php +++ b/src/Drivers/Gd/Decoders/AbstractDecoder.php @@ -26,10 +26,6 @@ protected function getMediaTypeByFilePath(string $filepath): MediaType throw new DecoderException('Unable to detect media (MIME) from data in file path.'); } - if (!array_key_exists('mime', $info)) { - throw new DecoderException('Unable to detect media (MIME) from data in file path.'); - } - return MediaType::from($info['mime']); } @@ -48,10 +44,6 @@ protected function getMediaTypeByBinary(string $data): MediaType throw new DecoderException('Unable to detect media (MIME) from binary data.'); } - if (!array_key_exists('mime', $info)) { - throw new DecoderException('Unable to detect media (MIME) from binary data.'); - } - return MediaType::from($info['mime']); } } diff --git a/src/Drivers/Gd/Frame.php b/src/Drivers/Gd/Frame.php index af1f3f197..c0ff3e293 100644 --- a/src/Drivers/Gd/Frame.php +++ b/src/Drivers/Gd/Frame.php @@ -6,6 +6,7 @@ use GdImage; use Intervention\Image\Exceptions\ColorException; +use Intervention\Image\Exceptions\InputException; use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Image; use Intervention\Image\Interfaces\DriverInterface; @@ -112,9 +113,14 @@ public function dispose(): int * {@inheritdoc} * * @see FrameInterface::setDispose() + * @throws InputException */ public function setDispose(int $dispose): FrameInterface { + if (!in_array($dispose, [0, 1, 2, 3])) { + throw new InputException('Value for argument $dispose must be 0, 1, 2 or 3.'); + } + $this->dispose = $dispose; return $this; diff --git a/src/Drivers/Imagick/Frame.php b/src/Drivers/Imagick/Frame.php index 354504cf4..a957ba5ad 100644 --- a/src/Drivers/Imagick/Frame.php +++ b/src/Drivers/Imagick/Frame.php @@ -7,6 +7,7 @@ use Imagick; use ImagickException; use ImagickPixel; +use Intervention\Image\Exceptions\InputException; use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Image; use Intervention\Image\Interfaces\DriverInterface; @@ -111,9 +112,14 @@ public function dispose(): int * {@inheritdoc} * * @see DriverInterface::setDispose() + * @throws InputException */ public function setDispose(int $dispose): FrameInterface { + if (!in_array($dispose, [0, 1, 2, 3])) { + throw new InputException('Value for argument $dispose must be 0, 1, 2 or 3.'); + } + $this->native->setImageDispose($dispose); return $this; diff --git a/tests/Unit/Drivers/Gd/FrameTest.php b/tests/Unit/Drivers/Gd/FrameTest.php index f7a33169a..d63210efe 100644 --- a/tests/Unit/Drivers/Gd/FrameTest.php +++ b/tests/Unit/Drivers/Gd/FrameTest.php @@ -66,9 +66,9 @@ public function testSetGetDispose(): void $frame = $this->getTestFrame(); $this->assertEquals(1, $frame->dispose()); - $result = $frame->setDispose(100); + $result = $frame->setDispose(3); $this->assertInstanceOf(Frame::class, $result); - $this->assertEquals(100, $frame->dispose()); + $this->assertEquals(3, $frame->dispose()); } public function testSetGetOffsetLeft(): void diff --git a/tests/Unit/Drivers/Imagick/FrameTest.php b/tests/Unit/Drivers/Imagick/FrameTest.php index 632dce405..0654697cb 100644 --- a/tests/Unit/Drivers/Imagick/FrameTest.php +++ b/tests/Unit/Drivers/Imagick/FrameTest.php @@ -23,7 +23,7 @@ protected function getTestFrame(): Frame $imagick = new Imagick(); $imagick->newImage(3, 2, new ImagickPixel('red'), 'png'); $imagick->setImageDelay(125); // 1.25 seconds - $imagick->setImageDispose(5); + $imagick->setImageDispose(0); $imagick->setImagePage(3, 2, 8, 9); return new Frame($imagick); @@ -55,11 +55,11 @@ public function testSetGetDelay(): void public function testSetGetDispose(): void { $frame = $this->getTestFrame(); - $this->assertEquals(5, $frame->dispose()); + $this->assertEquals(0, $frame->dispose()); - $result = $frame->setDispose(100); + $result = $frame->setDispose(3); $this->assertInstanceOf(Frame::class, $result); - $this->assertEquals(100, $frame->dispose()); + $this->assertEquals(3, $frame->dispose()); } public function testSetGetOffsetLeft(): void From 997ad32068e2c08c4f2f2232855f0ce2c018fa12 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Mon, 11 Nov 2024 10:44:37 +0100 Subject: [PATCH 02/10] Update to phpstan v2 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c5164c461..04090e76d 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "require-dev": { "phpunit/phpunit": "^10.0 || ^11.0", "mockery/mockery": "^1.6", - "phpstan/phpstan": "^1", + "phpstan/phpstan": "^2", "squizlabs/php_codesniffer": "^3.8", "slevomat/coding-standard": "~8.0" }, From 1da7ba4429f30c2bcedbee5ebc851e278cefcb07 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Tue, 12 Nov 2024 16:15:46 +0100 Subject: [PATCH 03/10] Switch test data providers to generators --- .../Hsl/Decoders/StringColorDecoderTest.php | 43 ++-- .../Hsv/Decoders/StringColorDecoderTest.php | 83 ++++--- .../Rgb/Decoders/HexColorDecoderTest.php | 103 ++++----- .../Rgb/Decoders/HtmlColornameDecoderTest.php | 33 ++- .../Rgb/Decoders/StringColorDecoderTest.php | 83 ++++--- .../Gd/Decoders/FilePathImageDecoderTest.php | 23 +- tests/Unit/Drivers/Gd/DriverTest.php | 217 +++++++++--------- .../Drivers/Gd/Encoders/PngEncoderTest.php | 83 ++++--- .../Decoders/FilePathImageDecoderTest.php | 23 +- tests/Unit/Drivers/Imagick/DriverTest.php | 217 +++++++++--------- .../Imagick/Encoders/PngEncoderTest.php | 93 ++++---- .../Encoders/FileExtensionEncoderTest.php | 47 ++-- tests/Unit/Encoders/MediaTypeEncoderTest.php | 45 ++-- tests/Unit/FileExtensionTest.php | 25 +- tests/Unit/Geometry/RectangleResizerTest.php | 109 ++++++--- tests/Unit/InputHandlerTest.php | 8 +- tests/Unit/MediaTypeTest.php | 57 +++-- 17 files changed, 655 insertions(+), 637 deletions(-) diff --git a/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php index 9eda0ef20..b7d2da5c1 100644 --- a/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Colors\Hsl\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Hsl\Color; @@ -24,29 +25,27 @@ public function testDecode(string $input, string $classname, array $channelValue $this->assertEquals($channelValues, $result->toArray()); } - public static function decodeDataProvier(): array + public static function decodeDataProvier(): Generator { - return [ - [ - 'hsl(0,0,0)', - Color::class, - [0, 0, 0], - ], - [ - 'hsl(0, 100, 50)', - Color::class, - [0, 100, 50], - ], - [ - 'hsl(360, 100, 50)', - Color::class, - [360, 100, 50], - ], - [ - 'hsl(180, 100%, 50%)', - Color::class, - [180, 100, 50], - ] + yield [ + 'hsl(0,0,0)', + Color::class, + [0, 0, 0], + ]; + yield [ + 'hsl(0, 100, 50)', + Color::class, + [0, 100, 50], + ]; + yield [ + 'hsl(360, 100, 50)', + Color::class, + [360, 100, 50], + ]; + yield [ + 'hsl(180, 100%, 50%)', + Color::class, + [180, 100, 50], ]; } } diff --git a/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php index 8b146d28c..1500d882f 100644 --- a/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Colors\Hsv\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Hsv\Color; @@ -24,49 +25,47 @@ public function testDecodeHsv(string $input, string $classname, array $channelVa $this->assertEquals($channelValues, $result->toArray()); } - public static function decodeDataProvier(): array + public static function decodeDataProvier(): Generator { - return [ - [ - 'hsv(0,0,0)', - Color::class, - [0, 0, 0], - ], - [ - 'hsv(0, 100, 100)', - Color::class, - [0, 100, 100], - ], - [ - 'hsv(360, 100, 100)', - Color::class, - [360, 100, 100], - ], - [ - 'hsv(180, 100%, 100%)', - Color::class, - [180, 100, 100], - ], - [ - 'hsb(0,0,0)', - Color::class, - [0, 0, 0], - ], - [ - 'hsb(0, 100, 100)', - Color::class, - [0, 100, 100], - ], - [ - 'hsb(360, 100, 100)', - Color::class, - [360, 100, 100], - ], - [ - 'hsb(180, 100%, 100%)', - Color::class, - [180, 100, 100], - ], + yield [ + 'hsv(0,0,0)', + Color::class, + [0, 0, 0], + ]; + yield [ + 'hsv(0, 100, 100)', + Color::class, + [0, 100, 100], + ]; + yield [ + 'hsv(360, 100, 100)', + Color::class, + [360, 100, 100], + ]; + yield [ + 'hsv(180, 100%, 100%)', + Color::class, + [180, 100, 100], + ]; + yield [ + 'hsb(0,0,0)', + Color::class, + [0, 0, 0], + ]; + yield [ + 'hsb(0, 100, 100)', + Color::class, + [0, 100, 100], + ]; + yield [ + 'hsb(360, 100, 100)', + Color::class, + [360, 100, 100], + ]; + yield [ + 'hsb(180, 100%, 100%)', + Color::class, + [180, 100, 100], ]; } } diff --git a/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php index fbe137797..f4cd8354d 100644 --- a/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Colors\Rgb\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; @@ -24,59 +25,57 @@ public function testDecode(string $input, string $classname, array $channelValue $this->assertEquals($channelValues, $result->toArray()); } - public static function decodeDataProvier(): array + public static function decodeDataProvier(): Generator { - return [ - [ - 'ccc', - Color::class, - [204, 204, 204, 255] - ], - [ - 'ccff33', - Color::class, - [204, 255, 51, 255], - ], - [ - '#ccc', - Color::class, - [204, 204, 204, 255], - ], - [ - 'cccccc', - Color::class, - [204, 204, 204, 255], - ], - [ - '#cccccc', - Color::class, - [204, 204, 204, 255], - ], - [ - '#ccccccff', - Color::class, - [204, 204, 204, 255], - ], - [ - '#cccf', - Color::class, - [204, 204, 204, 255], - ], - [ - 'ccccccff', - Color::class, - [204, 204, 204, 255], - ], - [ - 'cccf', - Color::class, - [204, 204, 204, 255], - ], - [ - '#b53717aa', - Color::class, - [181, 55, 23, 170], - ], + yield [ + 'ccc', + Color::class, + [204, 204, 204, 255] + ]; + yield [ + 'ccff33', + Color::class, + [204, 255, 51, 255], + ]; + yield [ + '#ccc', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'cccccc', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + '#cccccc', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + '#ccccccff', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + '#cccf', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'ccccccff', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'cccf', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + '#b53717aa', + Color::class, + [181, 55, 23, 170], ]; } } diff --git a/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php index afe418e06..e6b84029b 100644 --- a/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Colors\Rgb\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; @@ -24,24 +25,22 @@ public function testDecode(string $input, string $classname, array $channelValue $this->assertEquals($channelValues, $result->toArray()); } - public static function decodeDataProvier(): array + public static function decodeDataProvier(): Generator { - return [ - [ - 'salmon', - Color::class, - [250, 128, 114, 255], - ], - [ - 'khaki', - Color::class, - [240, 230, 140, 255], - ], - [ - 'peachpuff', - Color::class, - [255, 218, 185, 255], - ] + yield [ + 'salmon', + Color::class, + [250, 128, 114, 255], + ]; + yield [ + 'khaki', + Color::class, + [240, 230, 140, 255], + ]; + yield [ + 'peachpuff', + Color::class, + [255, 218, 185, 255], ]; } } diff --git a/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php index bf1353256..5f6503f16 100644 --- a/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Colors\Rgb\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; @@ -24,49 +25,47 @@ public function testDecode(string $input, string $classname, array $channelValue $this->assertEquals($channelValues, $result->toArray()); } - public static function decodeDataProvier(): array + public static function decodeDataProvier(): Generator { - return [ - [ - 'rgb(204, 204, 204)', - Color::class, - [204, 204, 204, 255], - ], - [ - 'rgb(204,204,204)', - Color::class, - [204, 204, 204, 255], - ], - [ - 'rgb(100%,20%,0%)', - Color::class, - [255, 51, 0, 255], - ], - [ - 'rgb(100%,19.8064%,0.1239483%)', - Color::class, - [255, 51, 0, 255], - ], - [ - 'rgba(204, 204, 204, 1)', - Color::class, - [204, 204, 204, 255], - ], - [ - 'rgba(204,204,204,.2)', - Color::class, - [204, 204, 204, 51], - ], - [ - 'rgba(204,204,204,0.2)', - Color::class, - [204, 204, 204, 51], - ], - [ - 'srgb(255, 0, 0)', - Color::class, - [255, 0, 0, 255], - ], + yield [ + 'rgb(204, 204, 204)', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'rgb(204,204,204)', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'rgb(100%,20%,0%)', + Color::class, + [255, 51, 0, 255], + ]; + yield [ + 'rgb(100%,19.8064%,0.1239483%)', + Color::class, + [255, 51, 0, 255], + ]; + yield [ + 'rgba(204, 204, 204, 1)', + Color::class, + [204, 204, 204, 255], + ]; + yield [ + 'rgba(204,204,204,.2)', + Color::class, + [204, 204, 204, 51], + ]; + yield [ + 'rgba(204,204,204,0.2)', + Color::class, + [204, 204, 204, 51], + ]; + yield [ + 'srgb(255, 0, 0)', + Color::class, + [255, 0, 0, 255], ]; } } diff --git a/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php index 9a76bd2fb..e17ebf467 100644 --- a/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder; @@ -39,18 +40,16 @@ public function testDecode(string $path, bool $result): void } } - public static function validFormatPathsProvider(): array + public static function validFormatPathsProvider(): Generator { - return [ - [self::getTestResourcePath('cats.gif'), true], - [self::getTestResourcePath('animation.gif'), true], - [self::getTestResourcePath('red.gif'), true], - [self::getTestResourcePath('green.gif'), true], - [self::getTestResourcePath('blue.gif'), true], - [self::getTestResourcePath('gradient.bmp'), true], - [self::getTestResourcePath('circle.png'), true], - ['no-path', false], - [str_repeat('x', PHP_MAXPATHLEN + 1), false], - ]; + yield [self::getTestResourcePath('cats.gif'), true]; + yield [self::getTestResourcePath('animation.gif'), true]; + yield [self::getTestResourcePath('red.gif'), true]; + yield [self::getTestResourcePath('green.gif'), true]; + yield [self::getTestResourcePath('blue.gif'), true]; + yield [self::getTestResourcePath('gradient.bmp'), true]; + yield [self::getTestResourcePath('circle.png'), true]; + yield ['no-path', false]; + yield [str_repeat('x', PHP_MAXPATHLEN + 1), false]; } } diff --git a/tests/Unit/Drivers/Gd/DriverTest.php b/tests/Unit/Drivers/Gd/DriverTest.php index 3ba81e1e5..989e3cad2 100644 --- a/tests/Unit/Drivers/Gd/DriverTest.php +++ b/tests/Unit/Drivers/Gd/DriverTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd; +use Generator; use Intervention\Image\Colors\Rgb\Colorspace; use Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder; use Intervention\Image\Drivers\Gd\Driver; @@ -92,115 +93,113 @@ public function testSupports(bool $result, mixed $identifier): void $this->assertEquals($result, $this->driver->supports($identifier)); } - public static function supportsDataProvider(): array + public static function supportsDataProvider(): Generator { - return [ - [true, Format::JPEG], - [true, MediaType::IMAGE_JPEG], - [true, MediaType::IMAGE_JPG], - [true, FileExtension::JPG], - [true, FileExtension::JPEG], - [true, 'jpg'], - [true, 'jpeg'], - [true, 'image/jpg'], - [true, 'image/jpeg'], - - [true, Format::WEBP], - [true, MediaType::IMAGE_WEBP], - [true, MediaType::IMAGE_X_WEBP], - [true, FileExtension::WEBP], - [true, 'webp'], - [true, 'image/webp'], - [true, 'image/x-webp'], - - [true, Format::GIF], - [true, MediaType::IMAGE_GIF], - [true, FileExtension::GIF], - [true, 'gif'], - [true, 'image/gif'], - - [true, Format::PNG], - [true, MediaType::IMAGE_PNG], - [true, MediaType::IMAGE_X_PNG], - [true, FileExtension::PNG], - [true, 'png'], - [true, 'image/png'], - [true, 'image/x-png'], - - [true, Format::AVIF], - [true, MediaType::IMAGE_AVIF], - [true, MediaType::IMAGE_X_AVIF], - [true, FileExtension::AVIF], - [true, 'avif'], - [true, 'image/avif'], - [true, 'image/x-avif'], - - [true, Format::BMP], - [true, FileExtension::BMP], - [true, MediaType::IMAGE_BMP], - [true, MediaType::IMAGE_MS_BMP], - [true, MediaType::IMAGE_X_BITMAP], - [true, MediaType::IMAGE_X_BMP], - [true, MediaType::IMAGE_X_MS_BMP], - [true, MediaType::IMAGE_X_WINDOWS_BMP], - [true, MediaType::IMAGE_X_WIN_BITMAP], - [true, MediaType::IMAGE_X_XBITMAP], - [true, 'bmp'], - [true, 'image/bmp'], - [true, 'image/ms-bmp'], - [true, 'image/x-bitmap'], - [true, 'image/x-bmp'], - [true, 'image/x-ms-bmp'], - [true, 'image/x-windows-bmp'], - [true, 'image/x-win-bitmap'], - [true, 'image/x-xbitmap'], - - [false, Format::TIFF], - [false, MediaType::IMAGE_TIFF], - [false, FileExtension::TIFF], - [false, FileExtension::TIF], - [false, 'tif'], - [false, 'tiff'], - [false, 'image/tiff'], - - [false, Format::JP2], - [false, MediaType::IMAGE_JP2], - [false, MediaType::IMAGE_JPX], - [false, MediaType::IMAGE_JPM], - [false, FileExtension::TIFF], - [false, FileExtension::TIF], - [false, FileExtension::JP2], - [false, FileExtension::J2K], - [false, FileExtension::JPF], - [false, FileExtension::JPM], - [false, FileExtension::JPG2], - [false, FileExtension::J2C], - [false, FileExtension::JPC], - [false, FileExtension::JPX], - [false, 'jp2'], - [false, 'j2k'], - [false, 'jpf'], - [false, 'jpm'], - [false, 'jpg2'], - [false, 'j2c'], - [false, 'jpc'], - [false, 'jpx'], - - [false, Format::HEIC], - [false, MediaType::IMAGE_HEIC], - [false, MediaType::IMAGE_HEIF], - [false, FileExtension::HEIC], - [false, FileExtension::HEIF], - [false, 'heic'], - [false, 'heif'], - [false, 'image/heic'], - [false, 'image/heif'], - - [false, 'tga'], - [false, 'image/tga'], - [false, 'image/x-targa'], - [false, 'foo'], - [false, ''], - ]; + yield [true, Format::JPEG]; + yield [true, MediaType::IMAGE_JPEG]; + yield [true, MediaType::IMAGE_JPG]; + yield [true, FileExtension::JPG]; + yield [true, FileExtension::JPEG]; + yield [true, 'jpg']; + yield [true, 'jpeg']; + yield [true, 'image/jpg']; + yield [true, 'image/jpeg']; + + yield [true, Format::WEBP]; + yield [true, MediaType::IMAGE_WEBP]; + yield [true, MediaType::IMAGE_X_WEBP]; + yield [true, FileExtension::WEBP]; + yield [true, 'webp']; + yield [true, 'image/webp']; + yield [true, 'image/x-webp']; + + yield [true, Format::GIF]; + yield [true, MediaType::IMAGE_GIF]; + yield [true, FileExtension::GIF]; + yield [true, 'gif']; + yield [true, 'image/gif']; + + yield [true, Format::PNG]; + yield [true, MediaType::IMAGE_PNG]; + yield [true, MediaType::IMAGE_X_PNG]; + yield [true, FileExtension::PNG]; + yield [true, 'png']; + yield [true, 'image/png']; + yield [true, 'image/x-png']; + + yield [true, Format::AVIF]; + yield [true, MediaType::IMAGE_AVIF]; + yield [true, MediaType::IMAGE_X_AVIF]; + yield [true, FileExtension::AVIF]; + yield [true, 'avif']; + yield [true, 'image/avif']; + yield [true, 'image/x-avif']; + + yield [true, Format::BMP]; + yield [true, FileExtension::BMP]; + yield [true, MediaType::IMAGE_BMP]; + yield [true, MediaType::IMAGE_MS_BMP]; + yield [true, MediaType::IMAGE_X_BITMAP]; + yield [true, MediaType::IMAGE_X_BMP]; + yield [true, MediaType::IMAGE_X_MS_BMP]; + yield [true, MediaType::IMAGE_X_WINDOWS_BMP]; + yield [true, MediaType::IMAGE_X_WIN_BITMAP]; + yield [true, MediaType::IMAGE_X_XBITMAP]; + yield [true, 'bmp']; + yield [true, 'image/bmp']; + yield [true, 'image/ms-bmp']; + yield [true, 'image/x-bitmap']; + yield [true, 'image/x-bmp']; + yield [true, 'image/x-ms-bmp']; + yield [true, 'image/x-windows-bmp']; + yield [true, 'image/x-win-bitmap']; + yield [true, 'image/x-xbitmap']; + + yield [false, Format::TIFF]; + yield [false, MediaType::IMAGE_TIFF]; + yield [false, FileExtension::TIFF]; + yield [false, FileExtension::TIF]; + yield [false, 'tif']; + yield [false, 'tiff']; + yield [false, 'image/tiff']; + + yield [false, Format::JP2]; + yield [false, MediaType::IMAGE_JP2]; + yield [false, MediaType::IMAGE_JPX]; + yield [false, MediaType::IMAGE_JPM]; + yield [false, FileExtension::TIFF]; + yield [false, FileExtension::TIF]; + yield [false, FileExtension::JP2]; + yield [false, FileExtension::J2K]; + yield [false, FileExtension::JPF]; + yield [false, FileExtension::JPM]; + yield [false, FileExtension::JPG2]; + yield [false, FileExtension::J2C]; + yield [false, FileExtension::JPC]; + yield [false, FileExtension::JPX]; + yield [false, 'jp2']; + yield [false, 'j2k']; + yield [false, 'jpf']; + yield [false, 'jpm']; + yield [false, 'jpg2']; + yield [false, 'j2c']; + yield [false, 'jpc']; + yield [false, 'jpx']; + + yield [false, Format::HEIC]; + yield [false, MediaType::IMAGE_HEIC]; + yield [false, MediaType::IMAGE_HEIF]; + yield [false, FileExtension::HEIC]; + yield [false, FileExtension::HEIF]; + yield [false, 'heic']; + yield [false, 'heif']; + yield [false, 'image/heic']; + yield [false, 'image/heif']; + + yield [false, 'tga']; + yield [false, 'image/tga']; + yield [false, 'image/x-targa']; + yield [false, 'foo']; + yield [false, '']; } } diff --git a/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php index fe5358cb5..b658696ea 100644 --- a/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Encoders\PngEncoder; @@ -48,49 +49,47 @@ public function testEncoderIndexed(ImageInterface $image, PngEncoder $encoder, s ); } - public static function indexedDataProvider(): array + public static function indexedDataProvider(): Generator { - return [ - [ - static::createTestImage(3, 2), // new - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::createTestImage(3, 2), // new - new PngEncoder(indexed: true), - 'indexed', - ], - [ - static::readTestImage('circle.png'), // truecolor-alpha - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('circle.png'), // indexedcolor-alpha - new PngEncoder(indexed: true), - 'indexed', - ], - [ - static::readTestImage('tile.png'), // indexed - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('tile.png'), // indexed - new PngEncoder(indexed: true), - 'indexed', - ], - [ - static::readTestImage('test.jpg'), // jpeg - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('test.jpg'), // jpeg - new PngEncoder(indexed: true), - 'indexed', - ], + yield [ + static::createTestImage(3, 2), // new + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::createTestImage(3, 2), // new + new PngEncoder(indexed: true), + 'indexed', + ]; + yield [ + static::readTestImage('circle.png'), // truecolor-alpha + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('circle.png'), // indexedcolor-alpha + new PngEncoder(indexed: true), + 'indexed', + ]; + yield [ + static::readTestImage('tile.png'), // indexed + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('tile.png'), // indexed + new PngEncoder(indexed: true), + 'indexed', + ]; + yield [ + static::readTestImage('test.jpg'), // jpeg + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('test.jpg'), // jpeg + new PngEncoder(indexed: true), + 'indexed', ]; } } diff --git a/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php index 8e5cd768a..e9b6c5280 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Decoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Drivers\Imagick\Decoders\FilePathImageDecoder; @@ -39,18 +40,16 @@ public function testDecode(string $path, bool $result): void } } - public static function validFormatPathsProvider(): array + public static function validFormatPathsProvider(): Generator { - return [ - [self::getTestResourcePath('cats.gif'), true], - [self::getTestResourcePath('animation.gif'), true], - [self::getTestResourcePath('red.gif'), true], - [self::getTestResourcePath('green.gif'), true], - [self::getTestResourcePath('blue.gif'), true], - [self::getTestResourcePath('gradient.bmp'), true], - [self::getTestResourcePath('circle.png'), true], - ['no-path', false], - [str_repeat('x', PHP_MAXPATHLEN + 1), false], - ]; + yield [self::getTestResourcePath('cats.gif'), true]; + yield [self::getTestResourcePath('animation.gif'), true]; + yield [self::getTestResourcePath('red.gif'), true]; + yield [self::getTestResourcePath('green.gif'), true]; + yield [self::getTestResourcePath('blue.gif'), true]; + yield [self::getTestResourcePath('gradient.bmp'), true]; + yield [self::getTestResourcePath('circle.png'), true]; + yield ['no-path', false]; + yield [str_repeat('x', PHP_MAXPATHLEN + 1), false]; } } diff --git a/tests/Unit/Drivers/Imagick/DriverTest.php b/tests/Unit/Drivers/Imagick/DriverTest.php index 93bfd7aee..58d59d980 100644 --- a/tests/Unit/Drivers/Imagick/DriverTest.php +++ b/tests/Unit/Drivers/Imagick/DriverTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick; +use Generator; use Intervention\Image\Colors\Rgb\Colorspace; use Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder; use Intervention\Image\Drivers\Imagick\Driver; @@ -92,115 +93,113 @@ public function testSupports(bool $result, mixed $identifier): void $this->assertEquals($result, $this->driver->supports($identifier)); } - public static function supportsDataProvider(): array + public static function supportsDataProvider(): Generator { - return [ - [true, Format::JPEG], - [true, MediaType::IMAGE_JPEG], - [true, MediaType::IMAGE_JPG], - [true, FileExtension::JPG], - [true, FileExtension::JPEG], - [true, 'jpg'], - [true, 'jpeg'], - [true, 'image/jpg'], - [true, 'image/jpeg'], - - [true, Format::WEBP], - [true, MediaType::IMAGE_WEBP], - [true, MediaType::IMAGE_X_WEBP], - [true, FileExtension::WEBP], - [true, 'webp'], - [true, 'image/webp'], - [true, 'image/x-webp'], - - [true, Format::GIF], - [true, MediaType::IMAGE_GIF], - [true, FileExtension::GIF], - [true, 'gif'], - [true, 'image/gif'], - - [true, Format::PNG], - [true, MediaType::IMAGE_PNG], - [true, MediaType::IMAGE_X_PNG], - [true, FileExtension::PNG], - [true, 'png'], - [true, 'image/png'], - [true, 'image/x-png'], - - [true, Format::AVIF], - [true, MediaType::IMAGE_AVIF], - [true, MediaType::IMAGE_X_AVIF], - [true, FileExtension::AVIF], - [true, 'avif'], - [true, 'image/avif'], - [true, 'image/x-avif'], - - [true, Format::BMP], - [true, FileExtension::BMP], - [true, MediaType::IMAGE_BMP], - [true, MediaType::IMAGE_MS_BMP], - [true, MediaType::IMAGE_X_BITMAP], - [true, MediaType::IMAGE_X_BMP], - [true, MediaType::IMAGE_X_MS_BMP], - [true, MediaType::IMAGE_X_WINDOWS_BMP], - [true, MediaType::IMAGE_X_WIN_BITMAP], - [true, MediaType::IMAGE_X_XBITMAP], - [true, 'bmp'], - [true, 'image/bmp'], - [true, 'image/ms-bmp'], - [true, 'image/x-bitmap'], - [true, 'image/x-bmp'], - [true, 'image/x-ms-bmp'], - [true, 'image/x-windows-bmp'], - [true, 'image/x-win-bitmap'], - [true, 'image/x-xbitmap'], - - [true, Format::TIFF], - [true, MediaType::IMAGE_TIFF], - [true, FileExtension::TIFF], - [true, FileExtension::TIF], - [true, 'tif'], - [true, 'tiff'], - [true, 'image/tiff'], - - [true, Format::JP2], - [true, MediaType::IMAGE_JP2], - [true, MediaType::IMAGE_JPX], - [true, MediaType::IMAGE_JPM], - [true, FileExtension::TIFF], - [true, FileExtension::TIF], - [true, FileExtension::JP2], - [true, FileExtension::J2K], - [true, FileExtension::JPF], - [true, FileExtension::JPM], - [true, FileExtension::JPG2], - [true, FileExtension::J2C], - [true, FileExtension::JPC], - [true, FileExtension::JPX], - [true, 'jp2'], - [true, 'j2k'], - [true, 'jpf'], - [true, 'jpm'], - [true, 'jpg2'], - [true, 'j2c'], - [true, 'jpc'], - [true, 'jpx'], - - [true, Format::HEIC], - [true, MediaType::IMAGE_HEIC], - [true, MediaType::IMAGE_HEIF], - [true, FileExtension::HEIC], - [true, FileExtension::HEIF], - [true, 'heic'], - [true, 'heif'], - [true, 'image/heic'], - [true, 'image/heif'], - - [false, 'tga'], - [false, 'image/tga'], - [false, 'image/x-targa'], - [false, 'foo'], - [false, ''], - ]; + yield [true, Format::JPEG]; + yield [true, MediaType::IMAGE_JPEG]; + yield [true, MediaType::IMAGE_JPG]; + yield [true, FileExtension::JPG]; + yield [true, FileExtension::JPEG]; + yield [true, 'jpg']; + yield [true, 'jpeg']; + yield [true, 'image/jpg']; + yield [true, 'image/jpeg']; + + yield [true, Format::WEBP]; + yield [true, MediaType::IMAGE_WEBP]; + yield [true, MediaType::IMAGE_X_WEBP]; + yield [true, FileExtension::WEBP]; + yield [true, 'webp']; + yield [true, 'image/webp']; + yield [true, 'image/x-webp']; + + yield [true, Format::GIF]; + yield [true, MediaType::IMAGE_GIF]; + yield [true, FileExtension::GIF]; + yield [true, 'gif']; + yield [true, 'image/gif']; + + yield [true, Format::PNG]; + yield [true, MediaType::IMAGE_PNG]; + yield [true, MediaType::IMAGE_X_PNG]; + yield [true, FileExtension::PNG]; + yield [true, 'png']; + yield [true, 'image/png']; + yield [true, 'image/x-png']; + + yield [true, Format::AVIF]; + yield [true, MediaType::IMAGE_AVIF]; + yield [true, MediaType::IMAGE_X_AVIF]; + yield [true, FileExtension::AVIF]; + yield [true, 'avif']; + yield [true, 'image/avif']; + yield [true, 'image/x-avif']; + + yield [true, Format::BMP]; + yield [true, FileExtension::BMP]; + yield [true, MediaType::IMAGE_BMP]; + yield [true, MediaType::IMAGE_MS_BMP]; + yield [true, MediaType::IMAGE_X_BITMAP]; + yield [true, MediaType::IMAGE_X_BMP]; + yield [true, MediaType::IMAGE_X_MS_BMP]; + yield [true, MediaType::IMAGE_X_WINDOWS_BMP]; + yield [true, MediaType::IMAGE_X_WIN_BITMAP]; + yield [true, MediaType::IMAGE_X_XBITMAP]; + yield [true, 'bmp']; + yield [true, 'image/bmp']; + yield [true, 'image/ms-bmp']; + yield [true, 'image/x-bitmap']; + yield [true, 'image/x-bmp']; + yield [true, 'image/x-ms-bmp']; + yield [true, 'image/x-windows-bmp']; + yield [true, 'image/x-win-bitmap']; + yield [true, 'image/x-xbitmap']; + + yield [true, Format::TIFF]; + yield [true, MediaType::IMAGE_TIFF]; + yield [true, FileExtension::TIFF]; + yield [true, FileExtension::TIF]; + yield [true, 'tif']; + yield [true, 'tiff']; + yield [true, 'image/tiff']; + + yield [true, Format::JP2]; + yield [true, MediaType::IMAGE_JP2]; + yield [true, MediaType::IMAGE_JPX]; + yield [true, MediaType::IMAGE_JPM]; + yield [true, FileExtension::TIFF]; + yield [true, FileExtension::TIF]; + yield [true, FileExtension::JP2]; + yield [true, FileExtension::J2K]; + yield [true, FileExtension::JPF]; + yield [true, FileExtension::JPM]; + yield [true, FileExtension::JPG2]; + yield [true, FileExtension::J2C]; + yield [true, FileExtension::JPC]; + yield [true, FileExtension::JPX]; + yield [true, 'jp2']; + yield [true, 'j2k']; + yield [true, 'jpf']; + yield [true, 'jpm']; + yield [true, 'jpg2']; + yield [true, 'j2c']; + yield [true, 'jpc']; + yield [true, 'jpx']; + + yield [true, Format::HEIC]; + yield [true, MediaType::IMAGE_HEIC]; + yield [true, MediaType::IMAGE_HEIF]; + yield [true, FileExtension::HEIC]; + yield [true, FileExtension::HEIF]; + yield [true, 'heic']; + yield [true, 'heif']; + yield [true, 'image/heic']; + yield [true, 'image/heif']; + + yield [false, 'tga']; + yield [false, 'image/tga']; + yield [false, 'image/x-targa']; + yield [false, 'foo']; + yield [false, '']; } } diff --git a/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php index 5684bb1c7..cf237e808 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Encoders\PngEncoder; @@ -48,55 +49,53 @@ public function testEncoderIndexed(ImageInterface $image, PngEncoder $encoder, s ); } - public static function indexedDataProvider(): array + public static function indexedDataProvider(): Generator { - return [ - [ - static::createTestImage(3, 2), // new - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::createTestImage(3, 2), // new - new PngEncoder(indexed: true), - 'indexed', - ], + yield [ + static::createTestImage(3, 2), // new + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::createTestImage(3, 2), // new + new PngEncoder(indexed: true), + 'indexed', + ]; - [ - static::createTestImage(3, 2)->fill('ccc'), // new grayscale - new PngEncoder(indexed: true), - 'grayscale', // result should be 'indexed' but there seems to be no way to force this with imagick - ], - [ - static::readTestImage('circle.png'), // truecolor-alpha - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('circle.png'), // indexedcolor-alpha - new PngEncoder(indexed: true), - 'grayscale-alpha', // result should be 'indexed' but there seems to be no way to force this with imagick - ], - [ - static::readTestImage('tile.png'), // indexed - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('tile.png'), // indexed - new PngEncoder(indexed: true), - 'indexed', - ], - [ - static::readTestImage('test.jpg'), // jpeg - new PngEncoder(indexed: false), - 'truecolor-alpha', - ], - [ - static::readTestImage('test.jpg'), // jpeg - new PngEncoder(indexed: true), - 'indexed', - ], + yield [ + static::createTestImage(3, 2)->fill('ccc'), // new grayscale + new PngEncoder(indexed: true), + 'grayscale', // result should be 'indexed' but there seems to be no way to force this with imagick + ]; + yield [ + static::readTestImage('circle.png'), // truecolor-alpha + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('circle.png'), // indexedcolor-alpha + new PngEncoder(indexed: true), + 'grayscale-alpha', // result should be 'indexed' but there seems to be no way to force this with imagick + ]; + yield [ + static::readTestImage('tile.png'), // indexed + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('tile.png'), // indexed + new PngEncoder(indexed: true), + 'indexed', + ]; + yield [ + static::readTestImage('test.jpg'), // jpeg + new PngEncoder(indexed: false), + 'truecolor-alpha', + ]; + yield [ + static::readTestImage('test.jpg'), // jpeg + new PngEncoder(indexed: true), + 'indexed', ]; } } diff --git a/tests/Unit/Encoders/FileExtensionEncoderTest.php b/tests/Unit/Encoders/FileExtensionEncoderTest.php index 4e28d9fcd..429f117b4 100644 --- a/tests/Unit/Encoders/FileExtensionEncoderTest.php +++ b/tests/Unit/Encoders/FileExtensionEncoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Encoders; +use Generator; use Intervention\Image\Encoders\AvifEncoder; use Intervention\Image\Encoders\BmpEncoder; use Intervention\Image\Encoders\FileExtensionEncoder; @@ -51,31 +52,29 @@ public function testEncoderByFileExtensionString( ); } - public static function targetEncoderProvider(): array + public static function targetEncoderProvider(): Generator { - return [ - ['webp', WebpEncoder::class], - ['avif', AvifEncoder::class], - ['jpeg', JpegEncoder::class], - ['jpg', JpegEncoder::class], - ['bmp', BmpEncoder::class], - ['gif', GifEncoder::class], - ['png', PngEncoder::class], - ['tiff', TiffEncoder::class], - ['tif', TiffEncoder::class], - ['jp2', Jpeg2000Encoder::class], - ['heic', HeicEncoder::class], - [FileExtension::WEBP, WebpEncoder::class], - [FileExtension::AVIF, AvifEncoder::class], - [FileExtension::JPG, JpegEncoder::class], - [FileExtension::BMP, BmpEncoder::class], - [FileExtension::GIF, GifEncoder::class], - [FileExtension::PNG, PngEncoder::class], - [FileExtension::TIF, TiffEncoder::class], - [FileExtension::TIFF, TiffEncoder::class], - [FileExtension::JP2, Jpeg2000Encoder::class], - [FileExtension::HEIC, HeicEncoder::class], - ]; + yield ['webp', WebpEncoder::class]; + yield ['avif', AvifEncoder::class]; + yield ['jpeg', JpegEncoder::class]; + yield ['jpg', JpegEncoder::class]; + yield ['bmp', BmpEncoder::class]; + yield ['gif', GifEncoder::class]; + yield ['png', PngEncoder::class]; + yield ['tiff', TiffEncoder::class]; + yield ['tif', TiffEncoder::class]; + yield ['jp2', Jpeg2000Encoder::class]; + yield ['heic', HeicEncoder::class]; + yield [FileExtension::WEBP, WebpEncoder::class]; + yield [FileExtension::AVIF, AvifEncoder::class]; + yield [FileExtension::JPG, JpegEncoder::class]; + yield [FileExtension::BMP, BmpEncoder::class]; + yield [FileExtension::GIF, GifEncoder::class]; + yield [FileExtension::PNG, PngEncoder::class]; + yield [FileExtension::TIF, TiffEncoder::class]; + yield [FileExtension::TIFF, TiffEncoder::class]; + yield [FileExtension::JP2, Jpeg2000Encoder::class]; + yield [FileExtension::HEIC, HeicEncoder::class]; } public function testArgumentsNotSupportedByTargetEncoder(): void diff --git a/tests/Unit/Encoders/MediaTypeEncoderTest.php b/tests/Unit/Encoders/MediaTypeEncoderTest.php index 713611acf..7d779bec5 100644 --- a/tests/Unit/Encoders/MediaTypeEncoderTest.php +++ b/tests/Unit/Encoders/MediaTypeEncoderTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Encoders; +use Generator; use Intervention\Image\Encoders\AvifEncoder; use Intervention\Image\Encoders\BmpEncoder; use Intervention\Image\Encoders\GifEncoder; @@ -51,30 +52,28 @@ public function testEncoderByMediaType( ); } - public static function targetEncoderProvider(): array + public static function targetEncoderProvider(): Generator { - 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], - ['image/tiff', TiffEncoder::class], - ['image/jp2', Jpeg2000Encoder::class], - ['image/heic', HeicEncoder::class], - [MediaType::IMAGE_WEBP, WebpEncoder::class], - [MediaType::IMAGE_AVIF, AvifEncoder::class], - [MediaType::IMAGE_JPEG, JpegEncoder::class], - [MediaType::IMAGE_BMP, BmpEncoder::class], - [MediaType::IMAGE_GIF, GifEncoder::class], - [MediaType::IMAGE_PNG, PngEncoder::class], - [MediaType::IMAGE_TIFF, TiffEncoder::class], - [MediaType::IMAGE_JP2, Jpeg2000Encoder::class], - [MediaType::IMAGE_HEIC, HeicEncoder::class], - [MediaType::IMAGE_HEIF, HeicEncoder::class], - ]; + yield ['image/webp', WebpEncoder::class]; + yield ['image/avif', AvifEncoder::class]; + yield ['image/jpeg', JpegEncoder::class]; + yield ['image/bmp', BmpEncoder::class]; + yield ['image/gif', GifEncoder::class]; + yield ['image/png', PngEncoder::class]; + yield ['image/png', PngEncoder::class]; + yield ['image/tiff', TiffEncoder::class]; + yield ['image/jp2', Jpeg2000Encoder::class]; + yield ['image/heic', HeicEncoder::class]; + yield [MediaType::IMAGE_WEBP, WebpEncoder::class]; + yield [MediaType::IMAGE_AVIF, AvifEncoder::class]; + yield [MediaType::IMAGE_JPEG, JpegEncoder::class]; + yield [MediaType::IMAGE_BMP, BmpEncoder::class]; + yield [MediaType::IMAGE_GIF, GifEncoder::class]; + yield [MediaType::IMAGE_PNG, PngEncoder::class]; + yield [MediaType::IMAGE_TIFF, TiffEncoder::class]; + yield [MediaType::IMAGE_JP2, Jpeg2000Encoder::class]; + yield [MediaType::IMAGE_HEIC, HeicEncoder::class]; + yield [MediaType::IMAGE_HEIF, HeicEncoder::class]; } public function testArgumentsNotSupportedByTargetEncoder(): void diff --git a/tests/Unit/FileExtensionTest.php b/tests/Unit/FileExtensionTest.php index 4092aabb3..c5ec92bde 100644 --- a/tests/Unit/FileExtensionTest.php +++ b/tests/Unit/FileExtensionTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit; +use Generator; use Intervention\Image\FileExtension; use Intervention\Image\Format; use Intervention\Image\MediaType; @@ -91,19 +92,17 @@ public function testMediatypes(FileExtension $extension, int $mediaTypeCount, Me $this->assertEquals($mediaType, $extension->mediaType()); } - public static function mediaTypesDataProvider(): array + public static function mediaTypesDataProvider(): Generator { - return [ - [FileExtension::JPEG, 4, MediaType::IMAGE_JPEG], - [FileExtension::WEBP, 2, MediaType::IMAGE_WEBP], - [FileExtension::GIF, 1, MediaType::IMAGE_GIF], - [FileExtension::PNG, 2, MediaType::IMAGE_PNG], - [FileExtension::AVIF, 2, MediaType::IMAGE_AVIF], - [FileExtension::BMP, 8, MediaType::IMAGE_BMP], - [FileExtension::TIFF, 1, MediaType::IMAGE_TIFF], - [FileExtension::TIF, 1, MediaType::IMAGE_TIFF], - [FileExtension::JP2, 3, MediaType::IMAGE_JP2], - [FileExtension::HEIC, 3, MediaType::IMAGE_HEIC], - ]; + yield [FileExtension::JPEG, 4, MediaType::IMAGE_JPEG]; + yield [FileExtension::WEBP, 2, MediaType::IMAGE_WEBP]; + yield [FileExtension::GIF, 1, MediaType::IMAGE_GIF]; + yield [FileExtension::PNG, 2, MediaType::IMAGE_PNG]; + yield [FileExtension::AVIF, 2, MediaType::IMAGE_AVIF]; + yield [FileExtension::BMP, 8, MediaType::IMAGE_BMP]; + yield [FileExtension::TIFF, 1, MediaType::IMAGE_TIFF]; + yield [FileExtension::TIF, 1, MediaType::IMAGE_TIFF]; + yield [FileExtension::JP2, 3, MediaType::IMAGE_JP2]; + yield [FileExtension::HEIC, 3, MediaType::IMAGE_HEIC]; } } diff --git a/tests/Unit/Geometry/RectangleResizerTest.php b/tests/Unit/Geometry/RectangleResizerTest.php index f5046d1be..ee54aa4da 100644 --- a/tests/Unit/Geometry/RectangleResizerTest.php +++ b/tests/Unit/Geometry/RectangleResizerTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit\Geometry; +use Generator; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use Intervention\Image\Geometry\Point; @@ -382,7 +383,7 @@ public function testScaleDown(): void } #[DataProvider('coverDataProvider')] - public function testCover($origin, $target, $result): void + public function testCover(Rectangle $origin, Rectangle $target, Rectangle $result): void { $resizer = new RectangleResizer(); $resizer->toSize($target); @@ -391,23 +392,21 @@ public function testCover($origin, $target, $result): void $this->assertEquals($result->height(), $resized->height()); } - public static function coverDataProvider(): array + public static function coverDataProvider(): Generator { - return [ - [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(133, 100)], - [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(200, 150)], - [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(267, 200)], - [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(2000, 1500)], - [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(2667, 2000)], - [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)], - [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(160, 120)], - [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(100, 133)], - [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(800, 800)], - ]; + yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(133, 100)]; + yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(200, 150)]; + yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(267, 200)]; + yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(2000, 1500)]; + yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(2667, 2000)]; + yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)]; + yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(160, 120)]; + yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(100, 133)]; + yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(800, 800)]; } #[DataProvider('containDataProvider')] - public function testContain($origin, $target, $result): void + public function testContain(Rectangle $origin, Rectangle $target, Rectangle $result): void { $resizer = new RectangleResizer(); $resizer->toSize($target); @@ -416,23 +415,21 @@ public function testContain($origin, $target, $result): void $this->assertEquals($result->height(), $resized->height()); } - public static function containDataProvider(): array + public static function containDataProvider(): Generator { - return [ - [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(100, 75)], - [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(133, 100)], - [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(100, 75)], - [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(13, 10)], - [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(10, 8)], - [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)], - [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(120, 90)], - [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(75, 100)], - [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(600, 600)], - ]; + yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(100, 75)]; + yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(133, 100)]; + yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(100, 75)]; + yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(13, 10)]; + yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(10, 8)]; + yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)]; + yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(120, 90)]; + yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(75, 100)]; + yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(600, 600)]; } #[DataProvider('cropDataProvider')] - public function testCrop($origin, $target, $position, $result): void + public function testCrop(Rectangle $origin, Rectangle $target, string $position, Rectangle $result): void { $resizer = new RectangleResizer(); $resizer->toSize($target); @@ -443,17 +440,55 @@ public function testCrop($origin, $target, $position, $result): void $this->assertEquals($result->pivot()->y(), $resized->pivot()->y()); } - public static function cropDataProvider(): array + public static function cropDataProvider(): Generator { - return [ - [new Rectangle(800, 600), new Rectangle(100, 100), 'center', new Rectangle(100, 100, new Point(350, 250))], - [new Rectangle(800, 600), new Rectangle(200, 100), 'center', new Rectangle(200, 100, new Point(300, 250))], - [new Rectangle(800, 600), new Rectangle(100, 200), 'center', new Rectangle(100, 200, new Point(350, 200))], - [new Rectangle(800, 600), new Rectangle(2000, 10), 'center', new Rectangle(2000, 10, new Point(-600, 295))], - [new Rectangle(800, 600), new Rectangle(10, 2000), 'center', new Rectangle(10, 2000, new Point(395, -700))], - [new Rectangle(800, 600), new Rectangle(800, 600), 'center', new Rectangle(800, 600, new Point(0, 0))], - [new Rectangle(400, 300), new Rectangle(120, 120), 'center', new Rectangle(120, 120, new Point(140, 90))], - [new Rectangle(600, 800), new Rectangle(100, 100), 'center', new Rectangle(100, 100, new Point(250, 350))], + yield [ + new Rectangle(800, 600), + new Rectangle(100, 100), + 'center', + new Rectangle(100, 100, new Point(350, 250)) + ]; + yield [ + new Rectangle(800, 600), + new Rectangle(200, 100), + 'center', + new Rectangle(200, 100, new Point(300, 250)) + ]; + yield [ + new Rectangle(800, 600), + new Rectangle(100, 200), + 'center', + new Rectangle(100, 200, new Point(350, 200)) + ]; + yield [ + new Rectangle(800, 600), + new Rectangle(2000, 10), + 'center', + new Rectangle(2000, 10, new Point(-600, 295)) + ]; + yield [ + new Rectangle(800, 600), + new Rectangle(10, 2000), + 'center', + new Rectangle(10, 2000, new Point(395, -700)) + ]; + yield [ + new Rectangle(800, 600), + new Rectangle(800, 600), + 'center', + new Rectangle(800, 600, new Point(0, 0)) + ]; + yield [ + new Rectangle(400, 300), + new Rectangle(120, 120), + 'center', + new Rectangle(120, 120, new Point(140, 90)) + ]; + yield [ + new Rectangle(600, 800), + new Rectangle(100, 100), + 'center', + new Rectangle(100, 100, new Point(250, 350)) ]; } } diff --git a/tests/Unit/InputHandlerTest.php b/tests/Unit/InputHandlerTest.php index f231d8f15..d88452189 100644 --- a/tests/Unit/InputHandlerTest.php +++ b/tests/Unit/InputHandlerTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit; +use Generator; use Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder; use Intervention\Image\Drivers\Gd\Driver as GdDriver; use Intervention\Image\Drivers\Imagick\Driver as ImagickDriver; @@ -33,7 +34,7 @@ public function testHandleDefaultDecoders(string $driver, mixed $input, string $ } } - public static function testHandleProvider(): array + public static function testHandleProvider(): Generator { $base = [ [null, DecoderException::class], @@ -49,16 +50,13 @@ public static function testHandleProvider(): array [file_get_contents(self::getTestResourcePath()), ImageInterface::class], ]; - $data = []; $drivers = [GdDriver::class, ImagickDriver::class]; foreach ($drivers as $driver) { foreach ($base as $line) { array_unshift($line, $driver); // prepend driver - $data[] = $line; + yield $line; } } - - return $data; } public function testResolveWithoutDriver(): void diff --git a/tests/Unit/MediaTypeTest.php b/tests/Unit/MediaTypeTest.php index aeca4bc29..f792e8960 100644 --- a/tests/Unit/MediaTypeTest.php +++ b/tests/Unit/MediaTypeTest.php @@ -4,6 +4,7 @@ namespace Intervention\Image\Tests\Unit; +use Generator; use Intervention\Image\FileExtension; use Intervention\Image\Format; use Intervention\Image\MediaType; @@ -118,35 +119,33 @@ public function testFileExtensions( $this->assertEquals($fileExtension, $mediaType->fileExtension()); } - public static function fileExtensionsDataProvider(): array + public static function fileExtensionsDataProvider(): Generator { - return [ - [MediaType::IMAGE_JPEG, 2, FileExtension::JPG], - [MediaType::IMAGE_JPG, 2, FileExtension::JPG], - [MediaType::IMAGE_PJPEG, 2, FileExtension::JPG], - [MediaType::IMAGE_X_JPEG, 2, FileExtension::JPG], - [MediaType::IMAGE_WEBP, 1, FileExtension::WEBP], - [MediaType::IMAGE_X_WEBP, 1, FileExtension::WEBP], - [MediaType::IMAGE_GIF, 1, FileExtension::GIF], - [MediaType::IMAGE_PNG, 1, FileExtension::PNG], - [MediaType::IMAGE_X_PNG, 1, FileExtension::PNG], - [MediaType::IMAGE_AVIF, 1, FileExtension::AVIF], - [MediaType::IMAGE_X_AVIF, 1, FileExtension::AVIF], - [MediaType::IMAGE_BMP, 1, FileExtension::BMP], - [MediaType::IMAGE_MS_BMP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_BITMAP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_BMP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_MS_BMP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_WINDOWS_BMP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_WIN_BITMAP, 1, FileExtension::BMP], - [MediaType::IMAGE_X_XBITMAP, 1, FileExtension::BMP], - [MediaType::IMAGE_TIFF, 2, FileExtension::TIF], - [MediaType::IMAGE_JP2, 8, FileExtension::JP2], - [MediaType::IMAGE_JPX, 8, FileExtension::JP2], - [MediaType::IMAGE_JPM, 8, FileExtension::JP2], - [MediaType::IMAGE_HEIC, 2, FileExtension::HEIC], - [MediaType::IMAGE_X_HEIC, 2, FileExtension::HEIC], - [MediaType::IMAGE_HEIF, 2, FileExtension::HEIC], - ]; + yield [MediaType::IMAGE_JPEG, 2, FileExtension::JPG]; + yield [MediaType::IMAGE_JPG, 2, FileExtension::JPG]; + yield [MediaType::IMAGE_PJPEG, 2, FileExtension::JPG]; + yield [MediaType::IMAGE_X_JPEG, 2, FileExtension::JPG]; + yield [MediaType::IMAGE_WEBP, 1, FileExtension::WEBP]; + yield [MediaType::IMAGE_X_WEBP, 1, FileExtension::WEBP]; + yield [MediaType::IMAGE_GIF, 1, FileExtension::GIF]; + yield [MediaType::IMAGE_PNG, 1, FileExtension::PNG]; + yield [MediaType::IMAGE_X_PNG, 1, FileExtension::PNG]; + yield [MediaType::IMAGE_AVIF, 1, FileExtension::AVIF]; + yield [MediaType::IMAGE_X_AVIF, 1, FileExtension::AVIF]; + yield [MediaType::IMAGE_BMP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_MS_BMP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_BITMAP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_BMP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_MS_BMP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_WINDOWS_BMP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_WIN_BITMAP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_X_XBITMAP, 1, FileExtension::BMP]; + yield [MediaType::IMAGE_TIFF, 2, FileExtension::TIF]; + yield [MediaType::IMAGE_JP2, 8, FileExtension::JP2]; + yield [MediaType::IMAGE_JPX, 8, FileExtension::JP2]; + yield [MediaType::IMAGE_JPM, 8, FileExtension::JP2]; + yield [MediaType::IMAGE_HEIC, 2, FileExtension::HEIC]; + yield [MediaType::IMAGE_X_HEIC, 2, FileExtension::HEIC]; + yield [MediaType::IMAGE_HEIF, 2, FileExtension::HEIC]; } } From de4035e45d4373c289f75ed86229601e9d50aa47 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Wed, 27 Nov 2024 17:23:59 +0100 Subject: [PATCH 04/10] Edit year in LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 408f801a3..b8f19ffc8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2013-2024 Oliver Vogel +Copyright (c) 2013-present Oliver Vogel Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From 65447d88896e04d4f64d7d34fba39f98a52eef63 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sat, 7 Dec 2024 16:39:22 +0100 Subject: [PATCH 05/10] Edit description --- readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/readme.md b/readme.md index b922cefe3..e81ed6fce 100644 --- a/readme.md +++ b/readme.md @@ -7,9 +7,9 @@ [![Support me on Ko-fi](https://raw.githubusercontent.com/Intervention/image/develop/.github/images/support.svg)](https://ko-fi.com/interventionphp) Intervention Image is a **PHP image processing library** that provides a simple -and expressive way to create, edit, and compose images. It features a unified -API for the two most popular image manipulation extensions. You can choose -between the GD library or Imagick as the base layer for all operations. +and expressive way to create, edit, and compose images. It features a universal +interface for the two most popular PHP image manipulation extensions. You can +choose between the GD library or Imagick as the base layer for all operations. - Simple interface for common image editing tasks - Interchangeable driver architecture From da4d538c70c5b9a960aafe5ae6cc38adeac2921b Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Fri, 6 Dec 2024 17:32:55 +0100 Subject: [PATCH 06/10] Optimize tests --- tests/Feature/Gd/ConvertPngGif.php | 2 + tests/Feature/Imagick/ConvertPngGif.php | 2 + tests/Unit/Colors/Cmyk/ChannelTest.php | 51 ++++++++++--------- tests/Unit/Colors/Cmyk/ColorTest.php | 4 +- tests/Unit/Colors/Cmyk/ColorspaceTest.php | 2 +- .../Cmyk/Decoders/StringColorDecoderTest.php | 4 +- tests/Unit/Colors/Hsl/ChannelTest.php | 6 +-- .../Colors/Hsl/Channels/SaturationTest.php | 2 + tests/Unit/Colors/Hsl/ColorTest.php | 2 +- tests/Unit/Colors/Hsl/ColorspaceTest.php | 2 +- .../Hsl/Decoders/StringColorDecoderTest.php | 4 +- tests/Unit/Colors/Hsv/ChannelTest.php | 8 ++- .../Colors/Hsv/Channels/SaturationTest.php | 2 + tests/Unit/Colors/Hsv/Channels/ValueTest.php | 2 + tests/Unit/Colors/Hsv/ColorTest.php | 2 +- tests/Unit/Colors/Hsv/ColorspaceTest.php | 2 +- .../Hsv/Decoders/StringColorDecoderTest.php | 4 +- tests/Unit/Colors/Rgb/ChannelTest.php | 11 ++-- tests/Unit/Colors/Rgb/Channels/AlphaTest.php | 2 +- tests/Unit/Colors/Rgb/ColorTest.php | 4 +- tests/Unit/Colors/Rgb/ColorspaceTest.php | 2 +- .../Rgb/Decoders/HexColorDecoderTest.php | 4 +- .../Rgb/Decoders/HtmlColornameDecoderTest.php | 4 +- .../Rgb/Decoders/StringColorDecoderTest.php | 4 +- tests/Unit/Drivers/AbstractDecoderTest.php | 2 +- tests/Unit/Drivers/AbstractEncoderTest.php | 2 +- .../Gd/Analyzers/ColorspaceAnalyzerTest.php | 7 +-- .../Gd/Analyzers/HeightAnalyzerTest.php | 7 +-- .../Gd/Analyzers/PixelColorAnalyzerTest.php | 7 +-- .../Gd/Analyzers/PixelColorsAnalyzerTest.php | 7 +-- .../Gd/Analyzers/ResolutionAnalyzerTest.php | 7 +-- .../Gd/Analyzers/WidthAnalyzerTest.php | 7 +-- tests/Unit/Drivers/Gd/ClonerTest.php | 4 ++ tests/Unit/Drivers/Gd/ColorProcessorTest.php | 4 ++ tests/Unit/Drivers/Gd/CoreTest.php | 4 ++ .../Gd/Decoders/AbstractDecoderTest.php | 4 ++ .../Gd/Decoders/Base64ImageDecoderTest.php | 2 +- .../Gd/Decoders/BinaryImageDecoderTest.php | 2 +- .../Gd/Decoders/DataUriImageDecoderTest.php | 2 +- .../Gd/Decoders/FilePathImageDecoderTest.php | 2 +- .../Decoders/FilePointerImageDecoderTest.php | 2 +- .../Gd/Decoders/ImageObjectDecoderTest.php | 2 +- .../Decoders/SplFileInfoImageDecoderTest.php | 2 +- tests/Unit/Drivers/Gd/DriverTest.php | 4 ++ .../Drivers/Gd/Encoders/AvifEncoderTest.php | 5 +- .../Drivers/Gd/Encoders/BmpEncoderTest.php | 5 +- .../Drivers/Gd/Encoders/GifEncoderTest.php | 5 +- .../Drivers/Gd/Encoders/JpegEncoderTest.php | 8 +-- .../Drivers/Gd/Encoders/PngEncoderTest.php | 5 +- .../Drivers/Gd/Encoders/WebpEncoderTest.php | 5 +- tests/Unit/Drivers/Gd/FontProcessorTest.php | 4 ++ tests/Unit/Drivers/Gd/FrameTest.php | 2 +- tests/Unit/Drivers/Gd/ImageTest.php | 4 ++ .../Analyzers/ColorspaceAnalyzerTest.php | 7 +-- .../Imagick/Analyzers/HeightAnalyzerTest.php | 7 +-- .../Analyzers/PixelColorAnalyzerTest.php | 7 +-- .../Analyzers/PixelColorsAnalyzerTest.php | 7 +-- .../Imagick/Analyzers/ProfileAnalyzerTest.php | 7 +-- .../Analyzers/ResolutionAnalyzerTest.php | 7 +-- .../Imagick/Analyzers/WidthAnalyzerTest.php | 7 +-- .../Drivers/Imagick/ColorProcessorTest.php | 4 ++ tests/Unit/Drivers/Imagick/CoreTest.php | 4 ++ .../Decoders/Base64ImageDecoderTest.php | 2 +- .../Decoders/BinaryImageDecoderTest.php | 4 ++ .../Decoders/DataUriImageDecoderTest.php | 2 +- .../Decoders/FilePathImageDecoderTest.php | 2 +- .../Decoders/FilePointerImageDecoderTest.php | 2 +- .../Decoders/ImageObjectDecoderTest.php | 2 +- .../Decoders/SplFileInfoImageDecoderTest.php | 2 +- tests/Unit/Drivers/Imagick/DriverTest.php | 4 ++ .../Imagick/Encoders/AvifEncoderTest.php | 5 +- .../Imagick/Encoders/BmpEncoderTest.php | 5 +- .../Imagick/Encoders/GifEncoderTest.php | 5 +- .../Imagick/Encoders/HeicEncoderTest.php | 5 +- .../Imagick/Encoders/Jpeg2000EncoderTest.php | 5 +- .../Imagick/Encoders/JpegEncoderTest.php | 8 +-- .../Imagick/Encoders/PngEncoderTest.php | 5 +- .../Imagick/Encoders/TiffEncoderTest.php | 5 +- .../Imagick/Encoders/WebpEncoderTest.php | 5 +- .../Drivers/Imagick/FontProcessorTest.php | 4 ++ tests/Unit/Drivers/Imagick/FrameTest.php | 2 +- tests/Unit/Drivers/Imagick/ImageTest.php | 4 ++ .../Drivers/SpecializableAnalyzerTest.php | 4 +- .../Unit/Drivers/SpecializableDecoderTest.php | 2 + .../Drivers/SpecializableModifierTest.php | 2 + tests/Unit/EncodedImageTest.php | 2 +- .../Encoders/FileExtensionEncoderTest.php | 2 + tests/Unit/Encoders/MediaTypeEncoderTest.php | 2 + tests/Unit/FileExtensionTest.php | 2 + tests/Unit/FileTest.php | 2 +- tests/Unit/FormatTest.php | 2 + tests/Unit/Geometry/BezierTest.php | 2 +- tests/Unit/Geometry/CircleTest.php | 2 + tests/Unit/Geometry/EllipseTest.php | 2 + .../Geometry/Factories/BezierFactoryTest.php | 2 + .../Geometry/Factories/CircleFactoryTest.php | 2 + .../Unit/Geometry/Factories/DrawableTest.php | 2 + .../Geometry/Factories/EllipseFactoryTest.php | 2 + .../Geometry/Factories/LineFactoryTest.php | 2 + .../Geometry/Factories/PolygonFactoryTest.php | 2 + .../Factories/RectangleFactoryTest.php | 2 + tests/Unit/Geometry/LineTest.php | 2 + tests/Unit/Geometry/PixelTest.php | 11 ++-- tests/Unit/Geometry/PointTest.php | 2 +- tests/Unit/Geometry/PolygonTest.php | 2 +- tests/Unit/Geometry/RectangleResizerTest.php | 2 +- tests/Unit/Geometry/RectangleTest.php | 2 + .../Traits/HasBackgroundColorTest.php | 2 + tests/Unit/Geometry/Traits/HasBorderTest.php | 2 + tests/Unit/MediaTypeTest.php | 2 + tests/Unit/ModifierStackTest.php | 2 +- .../Unit/Modifiers/ColorspaceModifierTest.php | 2 + tests/Unit/Modifiers/PadModifierTest.php | 2 + tests/Unit/Modifiers/TextModifierTest.php | 2 + tests/Unit/OriginTest.php | 2 + tests/Unit/ResolutionTest.php | 2 +- tests/Unit/Typography/FontFactoryTest.php | 2 + tests/Unit/Typography/FontTest.php | 2 + tests/Unit/Typography/LineTest.php | 2 + tests/Unit/Typography/TextBlockTest.php | 2 + 120 files changed, 292 insertions(+), 185 deletions(-) diff --git a/tests/Feature/Gd/ConvertPngGif.php b/tests/Feature/Gd/ConvertPngGif.php index 6e5eab7cb..11a590bb8 100644 --- a/tests/Feature/Gd/ConvertPngGif.php +++ b/tests/Feature/Gd/ConvertPngGif.php @@ -6,7 +6,9 @@ use Intervention\Image\ImageManager; use Intervention\Image\Tests\GdTestCase; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] class ConvertPngGif extends GdTestCase { public function testConversionKeepsTransparency(): void diff --git a/tests/Feature/Imagick/ConvertPngGif.php b/tests/Feature/Imagick/ConvertPngGif.php index d9bf11bf5..cb34ab8ed 100644 --- a/tests/Feature/Imagick/ConvertPngGif.php +++ b/tests/Feature/Imagick/ConvertPngGif.php @@ -6,7 +6,9 @@ use Intervention\Image\ImageManager; use Intervention\Image\Tests\ImagickTestCase; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] class ConvertPngGif extends ImagickTestCase { public function testConversionKeepsTransparency(): void diff --git a/tests/Unit/Colors/Cmyk/ChannelTest.php b/tests/Unit/Colors/Cmyk/ChannelTest.php index 1f58747e3..c397e3ce4 100644 --- a/tests/Unit/Colors/Cmyk/ChannelTest.php +++ b/tests/Unit/Colors/Cmyk/ChannelTest.php @@ -4,78 +4,79 @@ namespace Intervention\Image\Tests\Unit\Colors\Cmyk; -use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Colors\Cmyk\Channels\Cyan as Channel; +use Intervention\Image\Colors\Cmyk\Channels\Cyan; +use Intervention\Image\Colors\Cmyk\Channels\Key; +use Intervention\Image\Colors\Cmyk\Channels\Magenta; +use Intervention\Image\Colors\Cmyk\Channels\Yellow; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Channels\Cyan::class)] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Channels\Magenta::class)] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Channels\Yellow::class)] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Channels\Key::class)] +#[CoversClass(Cyan::class)] +#[CoversClass(Magenta::class)] +#[CoversClass(Yellow::class)] +#[CoversClass(Key::class)] final class ChannelTest extends BaseTestCase { public function testConstructor(): void { - $channel = new Channel(0); - $this->assertInstanceOf(Channel::class, $channel); + $channel = new Cyan(0); + $this->assertInstanceOf(Cyan::class, $channel); - $channel = new Channel(value: 0); - $this->assertInstanceOf(Channel::class, $channel); + $channel = new Cyan(value: 0); + $this->assertInstanceOf(Cyan::class, $channel); - $channel = new Channel(normalized: 0); - $this->assertInstanceOf(Channel::class, $channel); + $channel = new Cyan(normalized: 0); + $this->assertInstanceOf(Cyan::class, $channel); $this->expectException(ColorException::class); - new Channel(); + new Cyan(); $this->expectException(ColorException::class); - new Channel(normalized: 2); + new Cyan(normalized: 2); } public function testConstructorFail(): void { $this->expectException(ColorException::class); - new Channel(200); + new Cyan(200); } public function testToInt(): void { - $channel = new Channel(10); + $channel = new Cyan(10); $this->assertEquals(10, $channel->toInt()); } public function testToString(): void { - $channel = new Channel(10); + $channel = new Cyan(10); $this->assertEquals("10", $channel->toString()); $this->assertEquals("10", (string) $channel); } public function testValue(): void { - $channel = new Channel(10); + $channel = new Cyan(10); $this->assertEquals(10, $channel->value()); } public function testNormalize(): void { - $channel = new Channel(100); + $channel = new Cyan(100); $this->assertEquals(1, $channel->normalize()); - $channel = new Channel(0); + $channel = new Cyan(0); $this->assertEquals(0, $channel->normalize()); - $channel = new Channel(20); + $channel = new Cyan(20); $this->assertEquals(.2, $channel->normalize()); } public function testValidate(): void { $this->expectException(ColorException::class); - new Channel(101); + new Cyan(101); $this->expectException(ColorException::class); - new Channel(-1); + new Cyan(-1); } } diff --git a/tests/Unit/Colors/Cmyk/ColorTest.php b/tests/Unit/Colors/Cmyk/ColorTest.php index 7fae9ea41..f860bba8f 100644 --- a/tests/Unit/Colors/Cmyk/ColorTest.php +++ b/tests/Unit/Colors/Cmyk/ColorTest.php @@ -5,7 +5,6 @@ namespace Intervention\Image\Tests\Unit\Colors\Cmyk; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Cmyk\Channels\Cyan; use Intervention\Image\Colors\Cmyk\Channels\Key; use Intervention\Image\Colors\Cmyk\Channels\Magenta; @@ -15,8 +14,7 @@ use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Color::class)] +#[CoversClass(Color::class)] final class ColorTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Cmyk/ColorspaceTest.php b/tests/Unit/Colors/Cmyk/ColorspaceTest.php index 83cf00d98..a62a6be1f 100644 --- a/tests/Unit/Colors/Cmyk/ColorspaceTest.php +++ b/tests/Unit/Colors/Cmyk/ColorspaceTest.php @@ -16,7 +16,7 @@ use Intervention\Image\Colors\Cmyk\Colorspace; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Cmyk\Colorspace::class)] +#[CoversClass(Colorspace::class)] final class ColorspaceTest extends BaseTestCase { public function testColorFromNormalized(): void diff --git a/tests/Unit/Colors/Cmyk/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Cmyk/Decoders/StringColorDecoderTest.php index e24996b8e..9a8ceafdd 100644 --- a/tests/Unit/Colors/Cmyk/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Cmyk/Decoders/StringColorDecoderTest.php @@ -5,14 +5,12 @@ namespace Intervention\Image\Tests\Unit\Colors\Cmyk\Decoders; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Cmyk\Color; use Intervention\Image\Colors\Cmyk\Decoders\StringColorDecoder; use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Tests\BaseTestCase; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Cmyk\Decoders\StringColorDecoder::class)] +#[CoversClass(StringColorDecoder::class)] final class StringColorDecoderTest extends BaseTestCase { public function testDecode(): void diff --git a/tests/Unit/Colors/Hsl/ChannelTest.php b/tests/Unit/Colors/Hsl/ChannelTest.php index 11166f279..630e955b6 100644 --- a/tests/Unit/Colors/Hsl/ChannelTest.php +++ b/tests/Unit/Colors/Hsl/ChannelTest.php @@ -11,9 +11,9 @@ use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Hsl\Channels\Hue::class)] -#[CoversClass(\Intervention\Image\Colors\Hsl\Channels\Saturation::class)] -#[CoversClass(\Intervention\Image\Colors\Hsl\Channels\Luminance::class)] +#[CoversClass(Hue::class)] +#[CoversClass(Saturation::class)] +#[CoversClass(Luminance::class)] final class ChannelTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Hsl/Channels/SaturationTest.php b/tests/Unit/Colors/Hsl/Channels/SaturationTest.php index a97da881f..8ff4564c2 100644 --- a/tests/Unit/Colors/Hsl/Channels/SaturationTest.php +++ b/tests/Unit/Colors/Hsl/Channels/SaturationTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Colors\Hsl\Channels\Saturation; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Saturation::class)] final class SaturationTest extends BaseTestCase { public function testMinMax(): void diff --git a/tests/Unit/Colors/Hsl/ColorTest.php b/tests/Unit/Colors/Hsl/ColorTest.php index 749d21b00..82dda47e6 100644 --- a/tests/Unit/Colors/Hsl/ColorTest.php +++ b/tests/Unit/Colors/Hsl/ColorTest.php @@ -13,7 +13,7 @@ use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Hsl\Color::class)] +#[CoversClass(Color::class)] final class ColorTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Hsl/ColorspaceTest.php b/tests/Unit/Colors/Hsl/ColorspaceTest.php index 11574012a..eaf6b0365 100644 --- a/tests/Unit/Colors/Hsl/ColorspaceTest.php +++ b/tests/Unit/Colors/Hsl/ColorspaceTest.php @@ -15,7 +15,7 @@ use Intervention\Image\Colors\Hsl\Colorspace; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Hsl\Colorspace::class)] +#[CoversClass(Colorspace::class)] final class ColorspaceTest extends BaseTestCase { public function testColorFromNormalized(): void diff --git a/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php index b7d2da5c1..447ebd64f 100644 --- a/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Hsl/Decoders/StringColorDecoderTest.php @@ -6,14 +6,12 @@ use Generator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Hsl\Color; use Intervention\Image\Colors\Hsl\Decoders\StringColorDecoder; use Intervention\Image\Tests\BaseTestCase; use PHPUnit\Framework\Attributes\DataProvider; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Hsl\Decoders\StringColorDecoder::class)] +#[CoversClass(StringColorDecoder::class)] final class StringColorDecoderTest extends BaseTestCase { #[DataProvider('decodeDataProvier')] diff --git a/tests/Unit/Colors/Hsv/ChannelTest.php b/tests/Unit/Colors/Hsv/ChannelTest.php index e3aca085b..5942dc086 100644 --- a/tests/Unit/Colors/Hsv/ChannelTest.php +++ b/tests/Unit/Colors/Hsv/ChannelTest.php @@ -5,17 +5,15 @@ namespace Intervention\Image\Tests\Unit\Colors\Hsv; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Hsv\Channels\Hue; use Intervention\Image\Colors\Hsv\Channels\Saturation; use Intervention\Image\Colors\Hsv\Channels\Value; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Hsv\Channels\Hue::class)] -#[CoversClass(\Intervention\Image\Colors\Hsv\Channels\Saturation::class)] -#[CoversClass(\Intervention\Image\Colors\Hsv\Channels\Value::class)] +#[CoversClass(Hue::class)] +#[CoversClass(Saturation::class)] +#[CoversClass(Value::class)] final class ChannelTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Hsv/Channels/SaturationTest.php b/tests/Unit/Colors/Hsv/Channels/SaturationTest.php index db273448b..a1ff904f4 100644 --- a/tests/Unit/Colors/Hsv/Channels/SaturationTest.php +++ b/tests/Unit/Colors/Hsv/Channels/SaturationTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Colors\Hsv\Channels\Saturation; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Saturation::class)] final class SaturationTest extends BaseTestCase { public function testMinMax(): void diff --git a/tests/Unit/Colors/Hsv/Channels/ValueTest.php b/tests/Unit/Colors/Hsv/Channels/ValueTest.php index 7a49d592c..2278aabc5 100644 --- a/tests/Unit/Colors/Hsv/Channels/ValueTest.php +++ b/tests/Unit/Colors/Hsv/Channels/ValueTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Colors\Hsv\Channels\Value; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Value::class)] final class ValueTest extends BaseTestCase { public function testMinMax(): void diff --git a/tests/Unit/Colors/Hsv/ColorTest.php b/tests/Unit/Colors/Hsv/ColorTest.php index f4a270b22..8827f59c0 100644 --- a/tests/Unit/Colors/Hsv/ColorTest.php +++ b/tests/Unit/Colors/Hsv/ColorTest.php @@ -13,7 +13,7 @@ use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Hsv\Color::class)] +#[CoversClass(Color::class)] final class ColorTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Hsv/ColorspaceTest.php b/tests/Unit/Colors/Hsv/ColorspaceTest.php index ed6867a13..83b98a521 100644 --- a/tests/Unit/Colors/Hsv/ColorspaceTest.php +++ b/tests/Unit/Colors/Hsv/ColorspaceTest.php @@ -15,7 +15,7 @@ use Intervention\Image\Colors\Hsv\Colorspace; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Hsv\Colorspace::class)] +#[CoversClass(Colorspace::class)] final class ColorspaceTest extends BaseTestCase { public function testColorFromNormalized(): void diff --git a/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php index 1500d882f..34da08743 100644 --- a/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Hsv/Decoders/StringColorDecoderTest.php @@ -6,14 +6,12 @@ use Generator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Hsv\Color; use Intervention\Image\Colors\Hsv\Decoders\StringColorDecoder; use Intervention\Image\Tests\BaseTestCase; use PHPUnit\Framework\Attributes\DataProvider; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Hsv\Decoders\StringColorDecoder::class)] +#[CoversClass(StringColorDecoder::class)] final class StringColorDecoderTest extends BaseTestCase { #[DataProvider('decodeDataProvier')] diff --git a/tests/Unit/Colors/Rgb/ChannelTest.php b/tests/Unit/Colors/Rgb/ChannelTest.php index a61ef50d7..01c4a3902 100644 --- a/tests/Unit/Colors/Rgb/ChannelTest.php +++ b/tests/Unit/Colors/Rgb/ChannelTest.php @@ -4,16 +4,17 @@ namespace Intervention\Image\Tests\Unit\Colors\Rgb; +use Intervention\Image\Colors\Rgb\Channels\Blue; +use Intervention\Image\Colors\Rgb\Channels\Green; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Channels\Red as Channel; +use Intervention\Image\Colors\Rgb\Channels\Red; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Rgb\Channels\Red::class)] -#[CoversClass(\Intervention\Image\Colors\Rgb\Channels\Green::class)] -#[CoversClass(\Intervention\Image\Colors\Rgb\Channels\Blue::class)] +#[CoversClass(Red::class)] +#[CoversClass(Green::class)] +#[CoversClass(Blue::class)] final class ChannelTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Rgb/Channels/AlphaTest.php b/tests/Unit/Colors/Rgb/Channels/AlphaTest.php index cc6432bce..0faec9ebd 100644 --- a/tests/Unit/Colors/Rgb/Channels/AlphaTest.php +++ b/tests/Unit/Colors/Rgb/Channels/AlphaTest.php @@ -8,7 +8,7 @@ use Intervention\Image\Colors\Rgb\Channels\Alpha; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Rgb\Channels\Alpha::class)] +#[CoversClass(Alpha::class)] final class AlphaTest extends BaseTestCase { public function testToString(): void diff --git a/tests/Unit/Colors/Rgb/ColorTest.php b/tests/Unit/Colors/Rgb/ColorTest.php index 16bfd1edd..c1d159a4d 100644 --- a/tests/Unit/Colors/Rgb/ColorTest.php +++ b/tests/Unit/Colors/Rgb/ColorTest.php @@ -5,7 +5,6 @@ namespace Intervention\Image\Tests\Unit\Colors\Rgb; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Cmyk\Color as CmykColor; use Intervention\Image\Colors\Cmyk\Colorspace as CmykColorspace; use Intervention\Image\Colors\Rgb\Channels\Red; @@ -16,8 +15,7 @@ use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Rgb\Color::class)] +#[CoversClass(Color::class)] final class ColorTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Colors/Rgb/ColorspaceTest.php b/tests/Unit/Colors/Rgb/ColorspaceTest.php index 5d4d5ec84..081ae971c 100644 --- a/tests/Unit/Colors/Rgb/ColorspaceTest.php +++ b/tests/Unit/Colors/Rgb/ColorspaceTest.php @@ -16,7 +16,7 @@ use Intervention\Image\Colors\Rgb\Colorspace; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Colors\Rgb\Colorspace::class)] +#[CoversClass(Colorspace::class)] final class ColorspaceTest extends BaseTestCase { public function testColorFromNormalized(): void diff --git a/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php index f4cd8354d..3d510f4e6 100644 --- a/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/HexColorDecoderTest.php @@ -6,14 +6,12 @@ use Generator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; use Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder; use Intervention\Image\Tests\BaseTestCase; use PHPUnit\Framework\Attributes\DataProvider; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Rgb\Decoders\HexColorDecoder::class)] +#[CoversClass(HexColorDecoder::class)] final class HexColorDecoderTest extends BaseTestCase { #[DataProvider('decodeDataProvier')] diff --git a/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php index e6b84029b..ddb88f9f3 100644 --- a/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/HtmlColornameDecoderTest.php @@ -6,14 +6,12 @@ use Generator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; use Intervention\Image\Colors\Rgb\Decoders\HtmlColornameDecoder; use Intervention\Image\Tests\BaseTestCase; use PHPUnit\Framework\Attributes\DataProvider; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Rgb\Decoders\HtmlColorNameDecoder::class)] +#[CoversClass(HtmlColorNameDecoder::class)] final class HtmlColornameDecoderTest extends BaseTestCase { #[DataProvider('decodeDataProvier')] diff --git a/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php b/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php index 5f6503f16..951406c8d 100644 --- a/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php +++ b/tests/Unit/Colors/Rgb/Decoders/StringColorDecoderTest.php @@ -6,14 +6,12 @@ use Generator; use PHPUnit\Framework\Attributes\CoversClass; -use PHPUnit\Framework\Attributes\RequiresPhpExtension; use Intervention\Image\Colors\Rgb\Color; use Intervention\Image\Colors\Rgb\Decoders\StringColorDecoder; use Intervention\Image\Tests\BaseTestCase; use PHPUnit\Framework\Attributes\DataProvider; -#[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Colors\Rgb\Decoders\StringColorDecoder::class)] +#[CoversClass(StringColorDecoder::class)] final class StringColorDecoderTest extends BaseTestCase { #[DataProvider('decodeDataProvier')] diff --git a/tests/Unit/Drivers/AbstractDecoderTest.php b/tests/Unit/Drivers/AbstractDecoderTest.php index 2a9ff77fa..815923e3f 100644 --- a/tests/Unit/Drivers/AbstractDecoderTest.php +++ b/tests/Unit/Drivers/AbstractDecoderTest.php @@ -14,7 +14,7 @@ use Mockery; use stdClass; -#[CoversClass(\Intervention\Image\Drivers\AbstractDecoder::class)] +#[CoversClass(AbstractDecoder::class)] final class AbstractDecoderTest extends BaseTestCase { public function testIsGifFormat(): void diff --git a/tests/Unit/Drivers/AbstractEncoderTest.php b/tests/Unit/Drivers/AbstractEncoderTest.php index 26797b780..d3c1ead86 100644 --- a/tests/Unit/Drivers/AbstractEncoderTest.php +++ b/tests/Unit/Drivers/AbstractEncoderTest.php @@ -11,7 +11,7 @@ use Mockery; use PHPUnit\Metadata\CoversClass; -#[CoversClass(\Intervention\Image\Drivers\AbstractEncoder::class)] +#[CoversClass(AbstractEncoder::class)] final class AbstractEncoderTest extends BaseTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Gd/Analyzers/ColorspaceAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/ColorspaceAnalyzerTest.php index 1b345ddce..1cb0a0c4d 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/ColorspaceAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/ColorspaceAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Analyzers; +use Intervention\Image\Drivers\Gd\Analyzers\ColorspaceAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\ColorspaceAnalyzer; use Intervention\Image\Interfaces\ColorspaceInterface; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\ColorspaceAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\ColorspaceAnalyzer::class)] +#[CoversClass(ColorspaceAnalyzer::class)] final class ColorspaceAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new ColorspaceAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(ColorspaceInterface::class, $result); } diff --git a/tests/Unit/Drivers/Gd/Analyzers/HeightAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/HeightAnalyzerTest.php index a13c674ee..a8f243949 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/HeightAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/HeightAnalyzerTest.php @@ -4,20 +4,21 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Analyzers; +use Intervention\Image\Drivers\Gd\Analyzers\HeightAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\HeightAnalyzer; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\HeightAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\HeightAnalyzer::class)] +#[CoversClass(HeightAnalyzer::class)] final class HeightAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new HeightAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertEquals(16, $result); } diff --git a/tests/Unit/Drivers/Gd/Analyzers/PixelColorAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/PixelColorAnalyzerTest.php index 7257d02c9..363ed8836 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/PixelColorAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/PixelColorAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Analyzers; +use Intervention\Image\Drivers\Gd\Analyzers\PixelColorAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\PixelColorAnalyzer; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\PixelColorAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\PixelColorAnalyzer::class)] +#[CoversClass(PixelColorAnalyzer::class)] final class PixelColorAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new PixelColorAnalyzer(0, 0); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(ColorInterface::class, $result); $this->assertEquals('b4e000', $result->toHex()); diff --git a/tests/Unit/Drivers/Gd/Analyzers/PixelColorsAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/PixelColorsAnalyzerTest.php index c895712e8..9afa671f3 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/PixelColorsAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/PixelColorsAnalyzerTest.php @@ -6,20 +6,21 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\PixelColorsAnalyzer; use Intervention\Image\Collection; +use Intervention\Image\Drivers\Gd\Analyzers\PixelColorsAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\PixelColorsAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\PixelColorsAnalyzer::class)] +#[CoversClass(PixelColorsAnalyzer::class)] final class PixelColorsAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new PixelColorsAnalyzer(0, 0); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(Collection::class, $result); $this->assertInstanceOf(ColorInterface::class, $result->first()); diff --git a/tests/Unit/Drivers/Gd/Analyzers/ResolutionAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/ResolutionAnalyzerTest.php index f60684578..7b63c31af 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/ResolutionAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/ResolutionAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Analyzers; +use Intervention\Image\Drivers\Gd\Analyzers\ResolutionAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\ResolutionAnalyzer; use Intervention\Image\Resolution; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\ResolutionAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\ResolutionAnalyzer::class)] +#[CoversClass(ResolutionAnalyzer::class)] final class ResolutionAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new ResolutionAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(Resolution::class, $result); } diff --git a/tests/Unit/Drivers/Gd/Analyzers/WidthAnalyzerTest.php b/tests/Unit/Drivers/Gd/Analyzers/WidthAnalyzerTest.php index 7caea47b2..db3032c13 100644 --- a/tests/Unit/Drivers/Gd/Analyzers/WidthAnalyzerTest.php +++ b/tests/Unit/Drivers/Gd/Analyzers/WidthAnalyzerTest.php @@ -4,20 +4,21 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Analyzers; +use Intervention\Image\Drivers\Gd\Analyzers\WidthAnalyzer; +use Intervention\Image\Drivers\Gd\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\WidthAnalyzer; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Analyzers\WidthAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\WidthAnalyzer::class)] +#[CoversClass(WidthAnalyzer::class)] final class WidthAnalyzerTest extends GdTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new WidthAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertEquals(16, $result); } diff --git a/tests/Unit/Drivers/Gd/ClonerTest.php b/tests/Unit/Drivers/Gd/ClonerTest.php index 7fd396991..c9f84f3fd 100644 --- a/tests/Unit/Drivers/Gd/ClonerTest.php +++ b/tests/Unit/Drivers/Gd/ClonerTest.php @@ -8,7 +8,11 @@ use Intervention\Image\Drivers\Gd\Cloner; use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(Cloner::class)] final class ClonerTest extends BaseTestCase { public function testClone(): void diff --git a/tests/Unit/Drivers/Gd/ColorProcessorTest.php b/tests/Unit/Drivers/Gd/ColorProcessorTest.php index 8e214c938..9d574360b 100644 --- a/tests/Unit/Drivers/Gd/ColorProcessorTest.php +++ b/tests/Unit/Drivers/Gd/ColorProcessorTest.php @@ -12,7 +12,11 @@ use Intervention\Image\Drivers\Gd\ColorProcessor; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(ColorProcessor::class)] final class ColorProcessorTest extends BaseTestCase { public function testColorToNative(): void diff --git a/tests/Unit/Drivers/Gd/CoreTest.php b/tests/Unit/Drivers/Gd/CoreTest.php index c6cfb73a7..1c30f02c4 100644 --- a/tests/Unit/Drivers/Gd/CoreTest.php +++ b/tests/Unit/Drivers/Gd/CoreTest.php @@ -9,7 +9,11 @@ use Intervention\Image\Drivers\Gd\Frame; use Intervention\Image\Exceptions\AnimationException; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(Core::class)] final class CoreTest extends BaseTestCase { protected Core $core; diff --git a/tests/Unit/Drivers/Gd/Decoders/AbstractDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/AbstractDecoderTest.php index 03ecf5d4d..cfec3481d 100644 --- a/tests/Unit/Drivers/Gd/Decoders/AbstractDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/AbstractDecoderTest.php @@ -8,7 +8,11 @@ use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; use Mockery; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(AbstractDecoder::class)] final class AbstractDecoderTest extends BaseTestCase { public function testGetMediaTypeFromFilePath(): void diff --git a/tests/Unit/Drivers/Gd/Decoders/Base64ImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/Base64ImageDecoderTest.php index ff1bcc816..a8743fe4d 100644 --- a/tests/Unit/Drivers/Gd/Decoders/Base64ImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/Base64ImageDecoderTest.php @@ -13,7 +13,7 @@ use Intervention\Image\Tests\BaseTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\Base64ImageDecoder::class)] +#[CoversClass(Base64ImageDecoder::class)] final class Base64ImageDecoderTest extends BaseTestCase { protected Base64ImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Gd/Decoders/BinaryImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/BinaryImageDecoderTest.php index f7309f40a..303191ba9 100644 --- a/tests/Unit/Drivers/Gd/Decoders/BinaryImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/BinaryImageDecoderTest.php @@ -12,7 +12,7 @@ use Intervention\Image\Tests\BaseTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\BinaryImageDecoder::class)] +#[CoversClass(BinaryImageDecoder::class)] final class BinaryImageDecoderTest extends BaseTestCase { protected BinaryImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Gd/Decoders/DataUriImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/DataUriImageDecoderTest.php index 8c2f604e7..691bdd496 100644 --- a/tests/Unit/Drivers/Gd/Decoders/DataUriImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/DataUriImageDecoderTest.php @@ -14,7 +14,7 @@ use stdClass; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\DataUriImageDecoder::class)] +#[CoversClass(DataUriImageDecoder::class)] final class DataUriImageDecoderTest extends BaseTestCase { protected DataUriImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php index e17ebf467..4b0e47cb9 100644 --- a/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/FilePathImageDecoderTest.php @@ -15,7 +15,7 @@ use PHPUnit\Framework\Attributes\DataProvider; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder::class)] +#[CoversClass(FilePathImageDecoder::class)] final class FilePathImageDecoderTest extends BaseTestCase { protected FilePathImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Gd/Decoders/FilePointerImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/FilePointerImageDecoderTest.php index e40777efc..ee7a4f3df 100644 --- a/tests/Unit/Drivers/Gd/Decoders/FilePointerImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/FilePointerImageDecoderTest.php @@ -12,7 +12,7 @@ use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\FilePointerImageDecoder::class)] +#[CoversClass(FilePointerImageDecoder::class)] final class FilePointerImageDecoderTest extends GdTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Gd/Decoders/ImageObjectDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/ImageObjectDecoderTest.php index 2f8cbcd6a..cc67155c0 100644 --- a/tests/Unit/Drivers/Gd/Decoders/ImageObjectDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/ImageObjectDecoderTest.php @@ -11,7 +11,7 @@ use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Decoders\ImageObjectDecoder::class)] +#[CoversClass(ImageObjectDecoder::class)] final class ImageObjectDecoderTest extends GdTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Gd/Decoders/SplFileInfoImageDecoderTest.php b/tests/Unit/Drivers/Gd/Decoders/SplFileInfoImageDecoderTest.php index d0a5617e3..11d6c30ad 100644 --- a/tests/Unit/Drivers/Gd/Decoders/SplFileInfoImageDecoderTest.php +++ b/tests/Unit/Drivers/Gd/Decoders/SplFileInfoImageDecoderTest.php @@ -13,7 +13,7 @@ use SplFileInfo; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Decoders\SplFileInfoImageDecoder::class)] +#[CoversClass(SplFileInfoImageDecoder::class)] final class SplFileInfoImageDecoderTest extends BaseTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Gd/DriverTest.php b/tests/Unit/Drivers/Gd/DriverTest.php index 989e3cad2..ce009584b 100644 --- a/tests/Unit/Drivers/Gd/DriverTest.php +++ b/tests/Unit/Drivers/Gd/DriverTest.php @@ -15,8 +15,12 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(Driver::class)] final class DriverTest extends BaseTestCase { protected Driver $driver; diff --git a/tests/Unit/Drivers/Gd/Encoders/AvifEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/AvifEncoderTest.php index 1419d54c5..6bc109fbb 100644 --- a/tests/Unit/Drivers/Gd/Encoders/AvifEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/AvifEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; +use Intervention\Image\Drivers\Gd\Encoders\AvifEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\AvifEncoder; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\AvifEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\AvifEncoder::class)] +#[CoversClass(AvifEncoder::class)] final class AvifEncoderTest extends GdTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Gd/Encoders/BmpEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/BmpEncoderTest.php index 25a0d6387..39f2659de 100644 --- a/tests/Unit/Drivers/Gd/Encoders/BmpEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/BmpEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; +use Intervention\Image\Drivers\Gd\Encoders\BmpEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\BmpEncoder; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\BmpEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\BmpEncoder::class)] +#[CoversClass(BmpEncoder::class)] final class BmpEncoderTest extends GdTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Gd/Encoders/GifEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/GifEncoderTest.php index 6a87d7c53..6a9508595 100644 --- a/tests/Unit/Drivers/Gd/Encoders/GifEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/GifEncoderTest.php @@ -5,14 +5,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; use Intervention\Gif\Decoder; +use Intervention\Image\Drivers\Gd\Encoders\GifEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\GifEncoder; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\GifEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\GifEncoder::class)] +#[CoversClass(GifEncoder::class)] final class GifEncoderTest extends GdTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Gd/Encoders/JpegEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/JpegEncoderTest.php index 5e29fcc86..14d0c33e0 100644 --- a/tests/Unit/Drivers/Gd/Encoders/JpegEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/JpegEncoderTest.php @@ -4,15 +4,15 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; +use Intervention\Image\Drivers\Gd\Driver; +use Intervention\Image\Drivers\Gd\Encoders\JpegEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\JpegEncoder; use Intervention\Image\Tests\GdTestCase; use Intervention\Image\Tests\Traits\CanDetectProgressiveJpeg; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\JpegEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\JpegEncoder::class)] +#[CoversClass(JpegEncoder::class)] final class JpegEncoderTest extends GdTestCase { use CanDetectProgressiveJpeg; @@ -21,6 +21,7 @@ public function testEncode(): void { $image = $this->createTestImage(3, 2); $encoder = new JpegEncoder(75); + $encoder->setDriver(new Driver()); $result = $encoder->encode($image); $this->assertMediaType('image/jpeg', $result); $this->assertEquals('image/jpeg', $result->mimetype()); @@ -30,6 +31,7 @@ public function testEncodeProgressive(): void { $image = $this->createTestImage(3, 2); $encoder = new JpegEncoder(progressive: true); + $encoder->setDriver(new Driver()); $result = $encoder->encode($image); $this->assertMediaType('image/jpeg', $result); $this->assertEquals('image/jpeg', $result->mimetype()); diff --git a/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php index b658696ea..003bcb384 100644 --- a/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/PngEncoderTest.php @@ -5,17 +5,16 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; use Generator; +use Intervention\Image\Drivers\Gd\Encoders\PngEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\PngEncoder; use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Tests\GdTestCase; use Intervention\Image\Tests\Traits\CanInspectPngFormat; use PHPUnit\Framework\Attributes\DataProvider; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\PngEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\PngEncoder::class)] +#[CoversClass(PngEncoder::class)] final class PngEncoderTest extends GdTestCase { use CanInspectPngFormat; diff --git a/tests/Unit/Drivers/Gd/Encoders/WebpEncoderTest.php b/tests/Unit/Drivers/Gd/Encoders/WebpEncoderTest.php index c65a12faa..4878a5de3 100644 --- a/tests/Unit/Drivers/Gd/Encoders/WebpEncoderTest.php +++ b/tests/Unit/Drivers/Gd/Encoders/WebpEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Gd\Encoders; +use Intervention\Image\Drivers\Gd\Encoders\WebpEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\WebpEncoder; use Intervention\Image\Tests\GdTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Encoders\WebpEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Gd\Encoders\WebpEncoder::class)] +#[CoversClass(WebpEncoder::class)] final class WebpEncoderTest extends GdTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Gd/FontProcessorTest.php b/tests/Unit/Drivers/Gd/FontProcessorTest.php index f098f10a1..c4c90a9da 100644 --- a/tests/Unit/Drivers/Gd/FontProcessorTest.php +++ b/tests/Unit/Drivers/Gd/FontProcessorTest.php @@ -10,7 +10,11 @@ use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Font; use Intervention\Image\Typography\TextBlock; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(FontProcessor::class)] final class FontProcessorTest extends BaseTestCase { public function testBoxSizeGdOne(): void diff --git a/tests/Unit/Drivers/Gd/FrameTest.php b/tests/Unit/Drivers/Gd/FrameTest.php index d63210efe..ba7ae15f1 100644 --- a/tests/Unit/Drivers/Gd/FrameTest.php +++ b/tests/Unit/Drivers/Gd/FrameTest.php @@ -14,7 +14,7 @@ use Intervention\Image\Tests\BaseTestCase; #[RequiresPhpExtension('gd')] -#[CoversClass(\Intervention\Image\Drivers\Gd\Frame::class)] +#[CoversClass(Frame::class)] final class FrameTest extends BaseTestCase { protected function getTestFrame(): Frame diff --git a/tests/Unit/Drivers/Gd/ImageTest.php b/tests/Unit/Drivers/Gd/ImageTest.php index 83c762830..14e17f440 100644 --- a/tests/Unit/Drivers/Gd/ImageTest.php +++ b/tests/Unit/Drivers/Gd/ImageTest.php @@ -25,7 +25,11 @@ use Intervention\Image\Modifiers\GreyscaleModifier; use Intervention\Image\Tests\GdTestCase; use Intervention\Image\Typography\Font; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('gd')] +#[CoversClass(Image::class)] final class ImageTest extends GdTestCase { protected Image $image; diff --git a/tests/Unit/Drivers/Imagick/Analyzers/ColorspaceAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/ColorspaceAnalyzerTest.php index ba90b8b45..19f7e5dc9 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/ColorspaceAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/ColorspaceAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\ColorspaceAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\ColorspaceAnalyzer; use Intervention\Image\Interfaces\ColorspaceInterface; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\ColorspaceAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\ColorspaceAnalyzer::class)] +#[CoversClass(ColorspaceAnalyzer::class)] final class ColorspaceAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new ColorspaceAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(ColorspaceInterface::class, $result); } diff --git a/tests/Unit/Drivers/Imagick/Analyzers/HeightAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/HeightAnalyzerTest.php index ab1e3125a..f42962165 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/HeightAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/HeightAnalyzerTest.php @@ -4,20 +4,21 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\HeightAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\HeightAnalyzer; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\HeightAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\HeightAnalyzer::class)] +#[CoversClass(HeightAnalyzer::class)] final class HeightAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new HeightAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertEquals(16, $result); } diff --git a/tests/Unit/Drivers/Imagick/Analyzers/PixelColorAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/PixelColorAnalyzerTest.php index 0a5776298..10ea90608 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/PixelColorAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/PixelColorAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\PixelColorAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\PixelColorAnalyzer; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\PixelColorAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\PixelColorAnalyzer::class)] +#[CoversClass(PixelColorAnalyzer::class)] final class PixelColorAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new PixelColorAnalyzer(0, 0); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(ColorInterface::class, $result); $this->assertEquals('b4e000', $result->toHex()); diff --git a/tests/Unit/Drivers/Imagick/Analyzers/PixelColorsAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/PixelColorsAnalyzerTest.php index c1651bef6..f28d9621a 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/PixelColorsAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/PixelColorsAnalyzerTest.php @@ -6,20 +6,21 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\PixelColorsAnalyzer; use Intervention\Image\Collection; +use Intervention\Image\Drivers\Imagick\Analyzers\PixelColorsAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\PixelColorsAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\PixelColorsAnalyzer::class)] +#[CoversClass(PixelColorsAnalyzer::class)] final class PixelColorsAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new PixelColorsAnalyzer(0, 0); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(Collection::class, $result); $this->assertInstanceOf(ColorInterface::class, $result->first()); diff --git a/tests/Unit/Drivers/Imagick/Analyzers/ProfileAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/ProfileAnalyzerTest.php index f68e87a85..b2240e3c7 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/ProfileAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/ProfileAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\ProfileAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\ProfileAnalyzer; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\ProfileAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\ProfileAnalyzer::class)] +#[CoversClass(ProfileAnalyzer::class)] final class ProfileAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new ProfileAnalyzer(); + $analyzer->setDriver(new Driver()); $this->expectException(ColorException::class); $analyzer->analyze($image); } diff --git a/tests/Unit/Drivers/Imagick/Analyzers/ResolutionAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/ResolutionAnalyzerTest.php index 363fbbdb7..c811062f4 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/ResolutionAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/ResolutionAnalyzerTest.php @@ -4,21 +4,22 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\ResolutionAnalyzer; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\ResolutionAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use Intervention\Image\Resolution; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\ResolutionAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\ResolutionAnalyzer::class)] +#[CoversClass(ResolutionAnalyzer::class)] final class ResolutionAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new ResolutionAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertInstanceOf(Resolution::class, $result); } diff --git a/tests/Unit/Drivers/Imagick/Analyzers/WidthAnalyzerTest.php b/tests/Unit/Drivers/Imagick/Analyzers/WidthAnalyzerTest.php index acfecf533..a222028a3 100644 --- a/tests/Unit/Drivers/Imagick/Analyzers/WidthAnalyzerTest.php +++ b/tests/Unit/Drivers/Imagick/Analyzers/WidthAnalyzerTest.php @@ -4,20 +4,21 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Analyzers; +use Intervention\Image\Drivers\Imagick\Analyzers\WidthAnalyzer; +use Intervention\Image\Drivers\Imagick\Driver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Analyzers\WidthAnalyzer; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Analyzers\WidthAnalyzer::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Analyzers\WidthAnalyzer::class)] +#[CoversClass(WidthAnalyzer::class)] final class WidthAnalyzerTest extends ImagickTestCase { public function testAnalyze(): void { $image = $this->readTestImage('tile.png'); $analyzer = new WidthAnalyzer(); + $analyzer->setDriver(new Driver()); $result = $analyzer->analyze($image); $this->assertEquals(16, $result); } diff --git a/tests/Unit/Drivers/Imagick/ColorProcessorTest.php b/tests/Unit/Drivers/Imagick/ColorProcessorTest.php index 55164ae95..89c5224fd 100644 --- a/tests/Unit/Drivers/Imagick/ColorProcessorTest.php +++ b/tests/Unit/Drivers/Imagick/ColorProcessorTest.php @@ -9,7 +9,11 @@ use Intervention\Image\Colors\Rgb\Colorspace; use Intervention\Image\Drivers\Imagick\ColorProcessor; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] +#[CoversClass(ColorProcessor::class)] final class ColorProcessorTest extends BaseTestCase { public function testColorToNative(): void diff --git a/tests/Unit/Drivers/Imagick/CoreTest.php b/tests/Unit/Drivers/Imagick/CoreTest.php index 1a6fa89a3..3376ecc7c 100644 --- a/tests/Unit/Drivers/Imagick/CoreTest.php +++ b/tests/Unit/Drivers/Imagick/CoreTest.php @@ -10,7 +10,11 @@ use Intervention\Image\Drivers\Imagick\Frame; use Intervention\Image\Exceptions\AnimationException; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] +#[CoversClass(Core::class)] final class CoreTest extends BaseTestCase { protected Core $core; diff --git a/tests/Unit/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php index d4f622ebf..6ba10f572 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php @@ -13,7 +13,7 @@ use Intervention\Image\Tests\BaseTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Decoders\Base64ImageDecoder::class)] +#[CoversClass(Base64ImageDecoder::class)] final class Base64ImageDecoderTest extends BaseTestCase { protected Base64ImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php index 2b2211664..bfc34d3e7 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php @@ -11,8 +11,12 @@ use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use stdClass; +#[RequiresPhpExtension('imagick')] +#[CoversClass(BinaryImageDecoder::class)] final class BinaryImageDecoderTest extends BaseTestCase { protected BinaryImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php index db8de4d56..25004b663 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php @@ -14,7 +14,7 @@ use stdClass; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Decoders\DataUriImageDecoder::class)] +#[CoversClass(DataUriImageDecoder::class)] final class DataUriImageDecoderTest extends BaseTestCase { protected DataUriImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php index e9b6c5280..abe46d936 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php @@ -15,7 +15,7 @@ use PHPUnit\Framework\Attributes\DataProvider; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Decoders\FilePathImageDecoder::class)] +#[CoversClass(FilePathImageDecoder::class)] final class FilePathImageDecoderTest extends BaseTestCase { protected FilePathImageDecoder $decoder; diff --git a/tests/Unit/Drivers/Imagick/Decoders/FilePointerImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/FilePointerImageDecoderTest.php index 157240141..e2e9cef41 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/FilePointerImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/FilePointerImageDecoderTest.php @@ -12,7 +12,7 @@ use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Decoders\FilePointerImageDecoder::class)] +#[CoversClass(FilePointerImageDecoder::class)] final class FilePointerImageDecoderTest extends ImagickTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Imagick/Decoders/ImageObjectDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/ImageObjectDecoderTest.php index 70efd2b39..c2945d741 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/ImageObjectDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/ImageObjectDecoderTest.php @@ -11,7 +11,7 @@ use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Decoders\ImageObjectDecoder::class)] +#[CoversClass(ImageObjectDecoder::class)] final class ImageObjectDecoderTest extends ImagickTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Imagick/Decoders/SplFileInfoImageDecoderTest.php b/tests/Unit/Drivers/Imagick/Decoders/SplFileInfoImageDecoderTest.php index c4c26c864..1e6231ee0 100644 --- a/tests/Unit/Drivers/Imagick/Decoders/SplFileInfoImageDecoderTest.php +++ b/tests/Unit/Drivers/Imagick/Decoders/SplFileInfoImageDecoderTest.php @@ -13,7 +13,7 @@ use SplFileInfo; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Decoders\SplFileInfoImageDecoder::class)] +#[CoversClass(SplFileInfoImageDecoder::class)] final class SplFileInfoImageDecoderTest extends BaseTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/Imagick/DriverTest.php b/tests/Unit/Drivers/Imagick/DriverTest.php index 58d59d980..c94658329 100644 --- a/tests/Unit/Drivers/Imagick/DriverTest.php +++ b/tests/Unit/Drivers/Imagick/DriverTest.php @@ -15,8 +15,12 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] +#[CoversClass(Driver::class)] final class DriverTest extends BaseTestCase { protected Driver $driver; diff --git a/tests/Unit/Drivers/Imagick/Encoders/AvifEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/AvifEncoderTest.php index b425a2f3b..59acc267e 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/AvifEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/AvifEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\AvifEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\AvifEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\AvifEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\AvifEncoder::class)] +#[CoversClass(AvifEncoder::class)] final class AvifEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/BmpEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/BmpEncoderTest.php index 2ac9f9624..888b7d5c4 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/BmpEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/BmpEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\BmpEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\BmpEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\BmpEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\BmpEncoder::class)] +#[CoversClass(BmpEncoder::class)] final class BmpEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/GifEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/GifEncoderTest.php index 7085f95b0..98a8bf5ea 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/GifEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/GifEncoderTest.php @@ -5,14 +5,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; use Intervention\Gif\Decoder; +use Intervention\Image\Drivers\Imagick\Encoders\GifEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\GifEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\GifEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\GifEncoder::class)] +#[CoversClass(GifEncoder::class)] final class GifEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/HeicEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/HeicEncoderTest.php index b3843dadb..31ff38361 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/HeicEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/HeicEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\HeicEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\HeicEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\HeicEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\HeicEncoder::class)] +#[CoversClass(HeicEncoder::class)] final class HeicEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php index 689604a45..c9e4d0b85 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\Jpeg2000Encoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\Jpeg2000Encoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\Jpeg2000Encoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\Jpeg2000Encoder::class)] +#[CoversClass(Jpeg2000Encoder::class)] final class Jpeg2000EncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/JpegEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/JpegEncoderTest.php index 79285fc6b..7bbb91adf 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/JpegEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/JpegEncoderTest.php @@ -4,15 +4,15 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Driver; +use Intervention\Image\Drivers\Imagick\Encoders\JpegEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\JpegEncoder; use Intervention\Image\Tests\ImagickTestCase; use Intervention\Image\Tests\Traits\CanDetectProgressiveJpeg; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\JpegEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\JpegEncoder::class)] +#[CoversClass(JpegEncoder::class)] final class JpegEncoderTest extends ImagickTestCase { use CanDetectProgressiveJpeg; @@ -21,6 +21,7 @@ public function testEncode(): void { $image = $this->createTestImage(3, 2); $encoder = new JpegEncoder(75); + $encoder->setDriver(new Driver()); $result = $encoder->encode($image); $this->assertMediaType('image/jpeg', $result); $this->assertEquals('image/jpeg', $result->mimetype()); @@ -30,6 +31,7 @@ public function testEncodeProgressive(): void { $image = $this->createTestImage(3, 2); $encoder = new JpegEncoder(progressive: true); + $encoder->setDriver(new Driver()); $result = $encoder->encode($image); $this->assertMediaType('image/jpeg', $result); $this->assertEquals('image/jpeg', $result->mimetype()); diff --git a/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php index cf237e808..64d99f388 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/PngEncoderTest.php @@ -5,17 +5,16 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; use Generator; +use Intervention\Image\Drivers\Imagick\Encoders\PngEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\PngEncoder; use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Tests\ImagickTestCase; use Intervention\Image\Tests\Traits\CanInspectPngFormat; use PHPUnit\Framework\Attributes\DataProvider; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\PngEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\PngEncoder::class)] +#[CoversClass(PngEncoder::class)] final class PngEncoderTest extends ImagickTestCase { use CanInspectPngFormat; diff --git a/tests/Unit/Drivers/Imagick/Encoders/TiffEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/TiffEncoderTest.php index 25cf769ce..58a5dc4eb 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/TiffEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/TiffEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\TiffEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\TiffEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\TiffEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\TiffEncoder::class)] +#[CoversClass(TiffEncoder::class)] final class TiffEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/Encoders/WebpEncoderTest.php b/tests/Unit/Drivers/Imagick/Encoders/WebpEncoderTest.php index 89f3b39fa..18bf38f26 100644 --- a/tests/Unit/Drivers/Imagick/Encoders/WebpEncoderTest.php +++ b/tests/Unit/Drivers/Imagick/Encoders/WebpEncoderTest.php @@ -4,14 +4,13 @@ namespace Intervention\Image\Tests\Unit\Drivers\Imagick\Encoders; +use Intervention\Image\Drivers\Imagick\Encoders\WebpEncoder; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\RequiresPhpExtension; -use Intervention\Image\Encoders\WebpEncoder; use Intervention\Image\Tests\ImagickTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Encoders\WebpEncoder::class)] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Encoders\WebpEncoder::class)] +#[CoversClass(WebpEncoder::class)] final class WebpEncoderTest extends ImagickTestCase { public function testEncode(): void diff --git a/tests/Unit/Drivers/Imagick/FontProcessorTest.php b/tests/Unit/Drivers/Imagick/FontProcessorTest.php index cb80e97ad..ddbb4f681 100644 --- a/tests/Unit/Drivers/Imagick/FontProcessorTest.php +++ b/tests/Unit/Drivers/Imagick/FontProcessorTest.php @@ -10,7 +10,11 @@ use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Font; use Intervention\Image\Typography\TextBlock; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] +#[CoversClass(FontProcessor::class)] final class FontProcessorTest extends BaseTestCase { public function testBoxSizeTtf(): void diff --git a/tests/Unit/Drivers/Imagick/FrameTest.php b/tests/Unit/Drivers/Imagick/FrameTest.php index 0654697cb..9ee2a8665 100644 --- a/tests/Unit/Drivers/Imagick/FrameTest.php +++ b/tests/Unit/Drivers/Imagick/FrameTest.php @@ -15,7 +15,7 @@ use Intervention\Image\Tests\BaseTestCase; #[RequiresPhpExtension('imagick')] -#[CoversClass(\Intervention\Image\Drivers\Imagick\Frame::class)] +#[CoversClass(Frame::class)] final class FrameTest extends BaseTestCase { protected function getTestFrame(): Frame diff --git a/tests/Unit/Drivers/Imagick/ImageTest.php b/tests/Unit/Drivers/Imagick/ImageTest.php index 2a83c5604..311bbf5bf 100644 --- a/tests/Unit/Drivers/Imagick/ImageTest.php +++ b/tests/Unit/Drivers/Imagick/ImageTest.php @@ -25,7 +25,11 @@ use Intervention\Image\Modifiers\GreyscaleModifier; use Intervention\Image\Origin; use Intervention\Image\Tests\ImagickTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; +#[RequiresPhpExtension('imagick')] +#[CoversClass(Image::class)] final class ImageTest extends ImagickTestCase { protected Image $image; diff --git a/tests/Unit/Drivers/SpecializableAnalyzerTest.php b/tests/Unit/Drivers/SpecializableAnalyzerTest.php index b63457184..052805722 100644 --- a/tests/Unit/Drivers/SpecializableAnalyzerTest.php +++ b/tests/Unit/Drivers/SpecializableAnalyzerTest.php @@ -8,10 +8,12 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Tests\BaseTestCase; use Mockery; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(SpecializableAnalyzer::class)] final class SpecializableAnalyzerTest extends BaseTestCase { - public function testAnalyzer(): void + public function testAnalyze(): void { $analyzer = Mockery::mock(SpecializableAnalyzer::class)->makePartial(); $image = Mockery::mock(ImageInterface::class); diff --git a/tests/Unit/Drivers/SpecializableDecoderTest.php b/tests/Unit/Drivers/SpecializableDecoderTest.php index a6c5c3b99..b6b1e7e75 100644 --- a/tests/Unit/Drivers/SpecializableDecoderTest.php +++ b/tests/Unit/Drivers/SpecializableDecoderTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Tests\BaseTestCase; use Mockery; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(SpecializableDecoder::class)] final class SpecializableDecoderTest extends BaseTestCase { public function testDecode(): void diff --git a/tests/Unit/Drivers/SpecializableModifierTest.php b/tests/Unit/Drivers/SpecializableModifierTest.php index bea67973d..d8ddcefb9 100644 --- a/tests/Unit/Drivers/SpecializableModifierTest.php +++ b/tests/Unit/Drivers/SpecializableModifierTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Tests\BaseTestCase; use Mockery; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(SpecializableModifier::class)] final class SpecializableModifierTest extends BaseTestCase { public function testApply(): void diff --git a/tests/Unit/EncodedImageTest.php b/tests/Unit/EncodedImageTest.php index 9224d46b8..51fe2bf7c 100644 --- a/tests/Unit/EncodedImageTest.php +++ b/tests/Unit/EncodedImageTest.php @@ -8,7 +8,7 @@ use Intervention\Image\EncodedImage; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\EncodedImage::class)] +#[CoversClass(EncodedImage::class)] final class EncodedImageTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Encoders/FileExtensionEncoderTest.php b/tests/Unit/Encoders/FileExtensionEncoderTest.php index 429f117b4..ac03cf920 100644 --- a/tests/Unit/Encoders/FileExtensionEncoderTest.php +++ b/tests/Unit/Encoders/FileExtensionEncoderTest.php @@ -19,8 +19,10 @@ use Intervention\Image\FileExtension; use Intervention\Image\Interfaces\EncoderInterface; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +#[CoversClass(FileExtensionEncoder::class)] final class FileExtensionEncoderTest extends BaseTestCase { private function testEncoder(string|FileExtension $extension, array $options = []): EncoderInterface diff --git a/tests/Unit/Encoders/MediaTypeEncoderTest.php b/tests/Unit/Encoders/MediaTypeEncoderTest.php index 7d779bec5..d78c38e73 100644 --- a/tests/Unit/Encoders/MediaTypeEncoderTest.php +++ b/tests/Unit/Encoders/MediaTypeEncoderTest.php @@ -19,8 +19,10 @@ use Intervention\Image\Interfaces\EncoderInterface; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +#[CoversClass(MediaTypeEncoder::class)] final class MediaTypeEncoderTest extends BaseTestCase { private function testEncoder(string|MediaType $mediaType, array $options = []): EncoderInterface diff --git a/tests/Unit/FileExtensionTest.php b/tests/Unit/FileExtensionTest.php index c5ec92bde..65b907baa 100644 --- a/tests/Unit/FileExtensionTest.php +++ b/tests/Unit/FileExtensionTest.php @@ -9,8 +9,10 @@ use Intervention\Image\Format; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +#[CoversClass(FileExtension::class)] final class FileExtensionTest extends BaseTestCase { public function testFormatJpeg(): void diff --git a/tests/Unit/FileTest.php b/tests/Unit/FileTest.php index 79263c1d8..a34c82304 100644 --- a/tests/Unit/FileTest.php +++ b/tests/Unit/FileTest.php @@ -8,7 +8,7 @@ use Intervention\Image\File; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\File::class)] +#[CoversClass(File::class)] final class FileTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/FormatTest.php b/tests/Unit/FormatTest.php index e578397be..5c405025e 100644 --- a/tests/Unit/FormatTest.php +++ b/tests/Unit/FormatTest.php @@ -18,7 +18,9 @@ use Intervention\Image\Format; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Format::class)] final class FormatTest extends BaseTestCase { public function testCreate(): void diff --git a/tests/Unit/Geometry/BezierTest.php b/tests/Unit/Geometry/BezierTest.php index 8eed7e91d..c757109d8 100644 --- a/tests/Unit/Geometry/BezierTest.php +++ b/tests/Unit/Geometry/BezierTest.php @@ -9,7 +9,7 @@ use Intervention\Image\Geometry\Bezier; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Geometry\Bezier::class)] +#[CoversClass(Bezier::class)] final class BezierTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/CircleTest.php b/tests/Unit/Geometry/CircleTest.php index 155120251..fde9902c7 100644 --- a/tests/Unit/Geometry/CircleTest.php +++ b/tests/Unit/Geometry/CircleTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Circle; use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Circle::class)] final class CircleTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/EllipseTest.php b/tests/Unit/Geometry/EllipseTest.php index 31e8c7bca..4e811bd52 100644 --- a/tests/Unit/Geometry/EllipseTest.php +++ b/tests/Unit/Geometry/EllipseTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Ellipse; use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Ellipse::class)] final class EllipseTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/Factories/BezierFactoryTest.php b/tests/Unit/Geometry/Factories/BezierFactoryTest.php index a3e4ad30f..483dbda19 100644 --- a/tests/Unit/Geometry/Factories/BezierFactoryTest.php +++ b/tests/Unit/Geometry/Factories/BezierFactoryTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Factories\BezierFactory; use Intervention\Image\Geometry\Bezier; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(BezierFactory::class)] final class BezierFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/Factories/CircleFactoryTest.php b/tests/Unit/Geometry/Factories/CircleFactoryTest.php index 2dbc9524a..1a830f64f 100644 --- a/tests/Unit/Geometry/Factories/CircleFactoryTest.php +++ b/tests/Unit/Geometry/Factories/CircleFactoryTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Geometry\Factories\CircleFactory; use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(CircleFactory::class)] final class CircleFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/Factories/DrawableTest.php b/tests/Unit/Geometry/Factories/DrawableTest.php index a0bbec778..3bc429ef2 100644 --- a/tests/Unit/Geometry/Factories/DrawableTest.php +++ b/tests/Unit/Geometry/Factories/DrawableTest.php @@ -12,7 +12,9 @@ use Intervention\Image\Geometry\Factories\PolygonFactory; use Intervention\Image\Geometry\Factories\RectangleFactory; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(BezierFactory::class)] final class DrawableTest extends BaseTestCase { public function testBezier(): void diff --git a/tests/Unit/Geometry/Factories/EllipseFactoryTest.php b/tests/Unit/Geometry/Factories/EllipseFactoryTest.php index e5e37c26f..0b9bb9709 100644 --- a/tests/Unit/Geometry/Factories/EllipseFactoryTest.php +++ b/tests/Unit/Geometry/Factories/EllipseFactoryTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Geometry\Factories\EllipseFactory; use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(EllipseFactory::class)] final class EllipseFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/Factories/LineFactoryTest.php b/tests/Unit/Geometry/Factories/LineFactoryTest.php index 6870fe2ff..f3c3483c0 100644 --- a/tests/Unit/Geometry/Factories/LineFactoryTest.php +++ b/tests/Unit/Geometry/Factories/LineFactoryTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Factories\LineFactory; use Intervention\Image\Geometry\Line; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(LineFactory::class)] final class LineFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/Factories/PolygonFactoryTest.php b/tests/Unit/Geometry/Factories/PolygonFactoryTest.php index ebc41f024..284dc04ff 100644 --- a/tests/Unit/Geometry/Factories/PolygonFactoryTest.php +++ b/tests/Unit/Geometry/Factories/PolygonFactoryTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Factories\PolygonFactory; use Intervention\Image\Geometry\Polygon; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(PolygonFactory::class)] final class PolygonFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/Factories/RectangleFactoryTest.php b/tests/Unit/Geometry/Factories/RectangleFactoryTest.php index 79f86959e..b14b3bb13 100644 --- a/tests/Unit/Geometry/Factories/RectangleFactoryTest.php +++ b/tests/Unit/Geometry/Factories/RectangleFactoryTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Geometry\Point; use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(RectangleFactory::class)] final class RectangleFactoryTest extends BaseTestCase { public function testFactoryCallback(): void diff --git a/tests/Unit/Geometry/LineTest.php b/tests/Unit/Geometry/LineTest.php index c0153a981..1b24c190e 100644 --- a/tests/Unit/Geometry/LineTest.php +++ b/tests/Unit/Geometry/LineTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Line; use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Line::class)] final class LineTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/PixelTest.php b/tests/Unit/Geometry/PixelTest.php index 5115dde8e..00594e381 100644 --- a/tests/Unit/Geometry/PixelTest.php +++ b/tests/Unit/Geometry/PixelTest.php @@ -4,21 +4,20 @@ namespace Intervention\Image\Tests\Unit\Geometry; +use Intervention\Image\Colors\Rgb\Color; use PHPUnit\Framework\Attributes\CoversClass; use Intervention\Image\Geometry\Pixel; -use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Tests\BaseTestCase; -use Mockery; -#[CoversClass(\Intervention\Image\Geometry\Pixel::class)] +#[CoversClass(Pixel::class)] final class PixelTest extends BaseTestCase { public function testSetGetBackground(): void { - $color = Mockery::mock(ColorInterface::class); - $pixel = new Pixel($color, 10, 12); + $color = new Color(255, 55, 0); + $pixel = new Pixel(new Color(0, 0, 0), 10, 12); $result = $pixel->setBackgroundColor($color); - $this->assertInstanceOf(ColorInterface::class, $pixel->backgroundColor()); + $this->assertEquals($color, $pixel->backgroundColor()); $this->assertInstanceOf(Pixel::class, $result); } } diff --git a/tests/Unit/Geometry/PointTest.php b/tests/Unit/Geometry/PointTest.php index 002ca0a6c..57167df3e 100644 --- a/tests/Unit/Geometry/PointTest.php +++ b/tests/Unit/Geometry/PointTest.php @@ -8,7 +8,7 @@ use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Geometry\Point::class)] +#[CoversClass(Point::class)] final class PointTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/PolygonTest.php b/tests/Unit/Geometry/PolygonTest.php index 73e5890b6..fd4a5699b 100644 --- a/tests/Unit/Geometry/PolygonTest.php +++ b/tests/Unit/Geometry/PolygonTest.php @@ -9,7 +9,7 @@ use Intervention\Image\Geometry\Polygon; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Geometry\Polygon::class)] +#[CoversClass(Polygon::class)] final class PolygonTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/RectangleResizerTest.php b/tests/Unit/Geometry/RectangleResizerTest.php index ee54aa4da..a5bbb455f 100644 --- a/tests/Unit/Geometry/RectangleResizerTest.php +++ b/tests/Unit/Geometry/RectangleResizerTest.php @@ -12,7 +12,7 @@ use Intervention\Image\Geometry\Tools\RectangleResizer; use PHPUnit\Framework\TestCase; -#[CoversClass(\Intervention\Image\Geometry\Tools\RectangleResizer::class)] +#[CoversClass(RectangleResizer::class)] final class RectangleResizerTest extends TestCase { public function testMake(): void diff --git a/tests/Unit/Geometry/RectangleTest.php b/tests/Unit/Geometry/RectangleTest.php index ff61fdfef..636987339 100644 --- a/tests/Unit/Geometry/RectangleTest.php +++ b/tests/Unit/Geometry/RectangleTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Interfaces\PointInterface; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Rectangle::class)] final class RectangleTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Geometry/Traits/HasBackgroundColorTest.php b/tests/Unit/Geometry/Traits/HasBackgroundColorTest.php index dea09bd1c..ad44e5117 100644 --- a/tests/Unit/Geometry/Traits/HasBackgroundColorTest.php +++ b/tests/Unit/Geometry/Traits/HasBackgroundColorTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Geometry\Traits\HasBackgroundColor; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(HasBackgroundColor::class)] final class HasBackgroundColorTest extends BaseTestCase { public function getTestObject(): object diff --git a/tests/Unit/Geometry/Traits/HasBorderTest.php b/tests/Unit/Geometry/Traits/HasBorderTest.php index 2d3116123..968b51e24 100644 --- a/tests/Unit/Geometry/Traits/HasBorderTest.php +++ b/tests/Unit/Geometry/Traits/HasBorderTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Geometry\Traits\HasBorder; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(HasBorder::class)] final class HasBorderTest extends BaseTestCase { public function getTestObject(): object diff --git a/tests/Unit/MediaTypeTest.php b/tests/Unit/MediaTypeTest.php index f792e8960..56aceba4a 100644 --- a/tests/Unit/MediaTypeTest.php +++ b/tests/Unit/MediaTypeTest.php @@ -9,8 +9,10 @@ use Intervention\Image\Format; use Intervention\Image\MediaType; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +#[CoversClass(MediaType::class)] final class MediaTypeTest extends BaseTestCase { public function testFormatJpeg(): void diff --git a/tests/Unit/ModifierStackTest.php b/tests/Unit/ModifierStackTest.php index 8d63f4239..5a66b2005 100644 --- a/tests/Unit/ModifierStackTest.php +++ b/tests/Unit/ModifierStackTest.php @@ -12,7 +12,7 @@ use Intervention\Image\Tests\BaseTestCase; use Mockery; -#[CoversClass(\Intervention\Image\ModifierStack::class)] +#[CoversClass(ModifierStack::class)] final class ModifierStackTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Modifiers/ColorspaceModifierTest.php b/tests/Unit/Modifiers/ColorspaceModifierTest.php index d5cfc12e6..4e7ece978 100644 --- a/tests/Unit/Modifiers/ColorspaceModifierTest.php +++ b/tests/Unit/Modifiers/ColorspaceModifierTest.php @@ -9,7 +9,9 @@ use Intervention\Image\Interfaces\ColorspaceInterface; use Intervention\Image\Modifiers\ColorspaceModifier; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(ColorspaceModifier::class)] final class ColorspaceModifierTest extends BaseTestCase { public function testTargetColorspace(): void diff --git a/tests/Unit/Modifiers/PadModifierTest.php b/tests/Unit/Modifiers/PadModifierTest.php index 777c7752f..1421ca2c3 100644 --- a/tests/Unit/Modifiers/PadModifierTest.php +++ b/tests/Unit/Modifiers/PadModifierTest.php @@ -10,7 +10,9 @@ use Intervention\Image\Modifiers\PadModifier; use Intervention\Image\Tests\BaseTestCase; use Mockery; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(PadModifier::class)] final class PadModifierTest extends BaseTestCase { public function testGetCropSize(): void diff --git a/tests/Unit/Modifiers/TextModifierTest.php b/tests/Unit/Modifiers/TextModifierTest.php index 6db0c88ff..50b3d9bac 100644 --- a/tests/Unit/Modifiers/TextModifierTest.php +++ b/tests/Unit/Modifiers/TextModifierTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Modifiers\TextModifier; use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Font; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(TextModifier::class)] final class TextModifierTest extends BaseTestCase { public function testStrokeOffsets(): void diff --git a/tests/Unit/OriginTest.php b/tests/Unit/OriginTest.php index 2932ed48c..64ef06a33 100644 --- a/tests/Unit/OriginTest.php +++ b/tests/Unit/OriginTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Origin; use Intervention\Image\Tests\BaseTestCase; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Origin::class)] final class OriginTest extends BaseTestCase { public function testFilePath(): void diff --git a/tests/Unit/ResolutionTest.php b/tests/Unit/ResolutionTest.php index e0e4c844f..1e09748a9 100644 --- a/tests/Unit/ResolutionTest.php +++ b/tests/Unit/ResolutionTest.php @@ -8,7 +8,7 @@ use Intervention\Image\Resolution; use Intervention\Image\Tests\BaseTestCase; -#[CoversClass(\Intervention\Image\Resolution::class)] +#[CoversClass(Resolution::class)] final class ResolutionTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Typography/FontFactoryTest.php b/tests/Unit/Typography/FontFactoryTest.php index 7afd9e80d..277bf3990 100644 --- a/tests/Unit/Typography/FontFactoryTest.php +++ b/tests/Unit/Typography/FontFactoryTest.php @@ -8,7 +8,9 @@ use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Font; use Intervention\Image\Typography\FontFactory; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(FontFactory::class)] final class FontFactoryTest extends BaseTestCase { public function testBuildWithFont(): void diff --git a/tests/Unit/Typography/FontTest.php b/tests/Unit/Typography/FontTest.php index 06e68b299..724ddc74a 100644 --- a/tests/Unit/Typography/FontTest.php +++ b/tests/Unit/Typography/FontTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Exceptions\FontException; use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Font; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Font::class)] final class FontTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Typography/LineTest.php b/tests/Unit/Typography/LineTest.php index 4f313441c..b68bb3da5 100644 --- a/tests/Unit/Typography/LineTest.php +++ b/tests/Unit/Typography/LineTest.php @@ -7,7 +7,9 @@ use Intervention\Image\Geometry\Point; use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\Line; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(Line::class)] final class LineTest extends BaseTestCase { public function testConstructor(): void diff --git a/tests/Unit/Typography/TextBlockTest.php b/tests/Unit/Typography/TextBlockTest.php index 2ed9329a2..8555bc710 100644 --- a/tests/Unit/Typography/TextBlockTest.php +++ b/tests/Unit/Typography/TextBlockTest.php @@ -6,7 +6,9 @@ use Intervention\Image\Tests\BaseTestCase; use Intervention\Image\Typography\TextBlock; +use PHPUnit\Framework\Attributes\CoversClass; +#[CoversClass(TextBlock::class)] final class TextBlockTest extends BaseTestCase { protected TextBlock $block; From a42bd9fe53d76a014fe2ddb5264e7f6a90a9ab2f Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sun, 8 Dec 2024 08:59:03 +0100 Subject: [PATCH 07/10] Remove whitespace --- tests/Unit/Colors/Cmyk/ChannelTest.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/Unit/Colors/Cmyk/ChannelTest.php b/tests/Unit/Colors/Cmyk/ChannelTest.php index c397e3ce4..2c7aa5156 100644 --- a/tests/Unit/Colors/Cmyk/ChannelTest.php +++ b/tests/Unit/Colors/Cmyk/ChannelTest.php @@ -20,13 +20,13 @@ final class ChannelTest extends BaseTestCase { public function testConstructor(): void { - $channel = new Cyan(0); + $channel = new Cyan(0); $this->assertInstanceOf(Cyan::class, $channel); - $channel = new Cyan(value: 0); + $channel = new Cyan(value: 0); $this->assertInstanceOf(Cyan::class, $channel); - $channel = new Cyan(normalized: 0); + $channel = new Cyan(normalized: 0); $this->assertInstanceOf(Cyan::class, $channel); $this->expectException(ColorException::class); @@ -44,30 +44,30 @@ public function testConstructorFail(): void public function testToInt(): void { - $channel = new Cyan(10); + $channel = new Cyan(10); $this->assertEquals(10, $channel->toInt()); } public function testToString(): void { - $channel = new Cyan(10); + $channel = new Cyan(10); $this->assertEquals("10", $channel->toString()); $this->assertEquals("10", (string) $channel); } public function testValue(): void { - $channel = new Cyan(10); + $channel = new Cyan(10); $this->assertEquals(10, $channel->value()); } public function testNormalize(): void { - $channel = new Cyan(100); + $channel = new Cyan(100); $this->assertEquals(1, $channel->normalize()); - $channel = new Cyan(0); + $channel = new Cyan(0); $this->assertEquals(0, $channel->normalize()); - $channel = new Cyan(20); + $channel = new Cyan(20); $this->assertEquals(.2, $channel->normalize()); } From 77da6ca5c4a0c93039a4661bd10caab788b451ba Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Sat, 14 Dec 2024 08:27:56 +0100 Subject: [PATCH 08/10] Implement __debugInfo() (#1406) --- src/Colors/AbstractColor.php | 15 ++++++++++++++ src/Drivers/AbstractFrame.php | 25 ++++++++++++++++++++++++ src/Drivers/Gd/Frame.php | 3 ++- src/Drivers/Imagick/Frame.php | 3 ++- src/EncodedImage.php | 13 ++++++++++++ src/Geometry/Rectangle.php | 13 ++++++++++++ src/Image.php | 19 +++++++++++++++++- tests/Unit/Colors/Cmyk/ColorTest.php | 9 +++++++++ tests/Unit/Colors/Hsl/ColorTest.php | 8 ++++++++ tests/Unit/Colors/Hsv/ColorTest.php | 8 ++++++++ tests/Unit/Colors/Rgb/ColorTest.php | 9 +++++++++ tests/Unit/Drivers/Gd/FrameTest.php | 9 +++++++++ tests/Unit/Drivers/Gd/ImageTest.php | 7 +++++++ tests/Unit/Drivers/Imagick/ImageTest.php | 7 +++++++ tests/Unit/EncodedImageTest.php | 7 +++++++ tests/Unit/Geometry/RectangleTest.php | 7 +++++++ 16 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 src/Drivers/AbstractFrame.php diff --git a/src/Colors/AbstractColor.php b/src/Colors/AbstractColor.php index e69278858..ef9d7be72 100644 --- a/src/Colors/AbstractColor.php +++ b/src/Colors/AbstractColor.php @@ -8,6 +8,7 @@ use Intervention\Image\Interfaces\ColorChannelInterface; use Intervention\Image\Interfaces\ColorInterface; use Intervention\Image\Interfaces\ColorspaceInterface; +use ReflectionClass; abstract class AbstractColor implements ColorInterface { @@ -85,6 +86,20 @@ public function convertTo(string|ColorspaceInterface $colorspace): ColorInterfac return $colorspace->importColor($this); } + /** + * Show debug info for the current color + * + * @return array + */ + public function __debugInfo(): array + { + return array_reduce($this->channels(), function (array $result, ColorChannelInterface $item) { + $key = strtolower((new ReflectionClass($item))->getShortName()); + $result[$key] = $item->value(); + return $result; + }, []); + } + /** * {@inheritdoc} * diff --git a/src/Drivers/AbstractFrame.php b/src/Drivers/AbstractFrame.php new file mode 100644 index 000000000..706ddf529 --- /dev/null +++ b/src/Drivers/AbstractFrame.php @@ -0,0 +1,25 @@ + + */ + public function __debugInfo(): array + { + return [ + 'delay' => $this->delay(), + 'left' => $this->offsetLeft(), + 'top' => $this->offsetTop(), + 'dispose' => $this->dispose(), + ]; + } +} diff --git a/src/Drivers/Gd/Frame.php b/src/Drivers/Gd/Frame.php index c0ff3e293..d5e22750d 100644 --- a/src/Drivers/Gd/Frame.php +++ b/src/Drivers/Gd/Frame.php @@ -5,6 +5,7 @@ namespace Intervention\Image\Drivers\Gd; use GdImage; +use Intervention\Image\Drivers\AbstractFrame; use Intervention\Image\Exceptions\ColorException; use Intervention\Image\Exceptions\InputException; use Intervention\Image\Geometry\Rectangle; @@ -14,7 +15,7 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Interfaces\SizeInterface; -class Frame implements FrameInterface +class Frame extends AbstractFrame implements FrameInterface { /** * Create new frame instance diff --git a/src/Drivers/Imagick/Frame.php b/src/Drivers/Imagick/Frame.php index a957ba5ad..94281323f 100644 --- a/src/Drivers/Imagick/Frame.php +++ b/src/Drivers/Imagick/Frame.php @@ -7,6 +7,7 @@ use Imagick; use ImagickException; use ImagickPixel; +use Intervention\Image\Drivers\AbstractFrame; use Intervention\Image\Exceptions\InputException; use Intervention\Image\Geometry\Rectangle; use Intervention\Image\Image; @@ -15,7 +16,7 @@ use Intervention\Image\Interfaces\ImageInterface; use Intervention\Image\Interfaces\SizeInterface; -class Frame implements FrameInterface +class Frame extends AbstractFrame implements FrameInterface { /** * Create new frame object diff --git a/src/EncodedImage.php b/src/EncodedImage.php index a4c81fbf7..b2383b215 100644 --- a/src/EncodedImage.php +++ b/src/EncodedImage.php @@ -50,4 +50,17 @@ public function toDataUri(): string { return sprintf('data:%s;base64,%s', $this->mediaType(), base64_encode((string) $this)); } + + /** + * Show debug info for the current image + * + * @return array + */ + public function __debugInfo(): array + { + return [ + 'mimetype' => $this->mimetype(), + 'size' => $this->size(), + ]; + } } diff --git a/src/Geometry/Rectangle.php b/src/Geometry/Rectangle.php index de7194b6c..66937cc93 100644 --- a/src/Geometry/Rectangle.php +++ b/src/Geometry/Rectangle.php @@ -364,4 +364,17 @@ protected function resizer(?int $width = null, ?int $height = null): RectangleRe { return new RectangleResizer($width, $height); } + + /** + * Show debug info for the current rectangle + * + * @return array + */ + public function __debugInfo(): array + { + return [ + 'width' => $this->width(), + 'height' => $this->height(), + ]; + } } diff --git a/src/Image.php b/src/Image.php index 126df1702..21199ddf7 100644 --- a/src/Image.php +++ b/src/Image.php @@ -882,7 +882,7 @@ public function drawLine(callable|Closure|Line $init): ImageInterface ); } - /** + /** * {@inheritdoc} * * @see ImageInterface::drawBezier() @@ -1065,6 +1065,23 @@ public function toHeic(mixed ...$options): EncodedImageInterface return $this->encode(new HeicEncoder(...$options)); } + /** + * Show debug info for the current image + * + * @return array + */ + public function __debugInfo(): array + { + try { + return [ + 'width' => $this->width(), + 'height' => $this->height(), + ]; + } catch (RuntimeException) { + return []; + } + } + /** * Clone image * diff --git a/tests/Unit/Colors/Cmyk/ColorTest.php b/tests/Unit/Colors/Cmyk/ColorTest.php index f860bba8f..08a028a2f 100644 --- a/tests/Unit/Colors/Cmyk/ColorTest.php +++ b/tests/Unit/Colors/Cmyk/ColorTest.php @@ -115,4 +115,13 @@ public function testIsClear(): void $color = new Color(0, 0, 0, 0); $this->assertFalse($color->isClear()); } + + public function testDebugInfo(): void + { + $info = (new Color(10, 20, 30, 40))->__debugInfo(); + $this->assertEquals(10, $info['cyan']); + $this->assertEquals(20, $info['magenta']); + $this->assertEquals(30, $info['yellow']); + $this->assertEquals(40, $info['key']); + } } diff --git a/tests/Unit/Colors/Hsl/ColorTest.php b/tests/Unit/Colors/Hsl/ColorTest.php index 82dda47e6..c0d9e4234 100644 --- a/tests/Unit/Colors/Hsl/ColorTest.php +++ b/tests/Unit/Colors/Hsl/ColorTest.php @@ -114,4 +114,12 @@ public function testIsClear(): void $color = new Color(0, 1, 0); $this->assertFalse($color->isClear()); } + + public function testDebugInfo(): void + { + $info = (new Color(10, 20, 30))->__debugInfo(); + $this->assertEquals(10, $info['hue']); + $this->assertEquals(20, $info['saturation']); + $this->assertEquals(30, $info['luminance']); + } } diff --git a/tests/Unit/Colors/Hsv/ColorTest.php b/tests/Unit/Colors/Hsv/ColorTest.php index 8827f59c0..1d900e28e 100644 --- a/tests/Unit/Colors/Hsv/ColorTest.php +++ b/tests/Unit/Colors/Hsv/ColorTest.php @@ -114,4 +114,12 @@ public function testIsClear(): void $color = new Color(0, 1, 0); $this->assertFalse($color->isClear()); } + + public function testDebugInfo(): void + { + $info = (new Color(10, 20, 30))->__debugInfo(); + $this->assertEquals(10, $info['hue']); + $this->assertEquals(20, $info['saturation']); + $this->assertEquals(30, $info['value']); + } } diff --git a/tests/Unit/Colors/Rgb/ColorTest.php b/tests/Unit/Colors/Rgb/ColorTest.php index c1d159a4d..28579ffe8 100644 --- a/tests/Unit/Colors/Rgb/ColorTest.php +++ b/tests/Unit/Colors/Rgb/ColorTest.php @@ -176,4 +176,13 @@ public function testIsClear(): void $color = new Color(255, 255, 255, 0); $this->assertTrue($color->isClear()); } + + public function testDebugInfo(): void + { + $info = (new Color(10, 20, 30, 40))->__debugInfo(); + $this->assertEquals(10, $info['red']); + $this->assertEquals(20, $info['green']); + $this->assertEquals(30, $info['blue']); + $this->assertEquals(40, $info['alpha']); + } } diff --git a/tests/Unit/Drivers/Gd/FrameTest.php b/tests/Unit/Drivers/Gd/FrameTest.php index ba7ae15f1..b70cdb96a 100644 --- a/tests/Unit/Drivers/Gd/FrameTest.php +++ b/tests/Unit/Drivers/Gd/FrameTest.php @@ -108,4 +108,13 @@ public function testToImage(): void $frame = $this->getTestFrame(); $this->assertInstanceOf(Image::class, $frame->toImage(new Driver())); } + + public function testDebugInfo(): void + { + $info = $this->getTestFrame()->__debugInfo(); + $this->assertEquals(0, $info['delay']); + $this->assertEquals(0, $info['left']); + $this->assertEquals(0, $info['top']); + $this->assertEquals(1, $info['dispose']); + } } diff --git a/tests/Unit/Drivers/Gd/ImageTest.php b/tests/Unit/Drivers/Gd/ImageTest.php index 14e17f440..0da171b57 100644 --- a/tests/Unit/Drivers/Gd/ImageTest.php +++ b/tests/Unit/Drivers/Gd/ImageTest.php @@ -390,4 +390,11 @@ public function testBrightness(): void $this->assertInstanceOf(ImageInterface::class, $result); $this->assertEquals('4cfaff', $image->pickColor(14, 14)->toHex()); } + + public function testDebugInfo(): void + { + $info = $this->readTestImage('trim.png')->__debugInfo(); + $this->assertArrayHasKey('width', $info); + $this->assertArrayHasKey('height', $info); + } } diff --git a/tests/Unit/Drivers/Imagick/ImageTest.php b/tests/Unit/Drivers/Imagick/ImageTest.php index 311bbf5bf..99ca2612c 100644 --- a/tests/Unit/Drivers/Imagick/ImageTest.php +++ b/tests/Unit/Drivers/Imagick/ImageTest.php @@ -392,4 +392,11 @@ public function testBrightness(): void $this->assertInstanceOf(ImageInterface::class, $result); $this->assertEquals('39c9ff', $image->pickColor(14, 14)->toHex()); } + + public function testDebugInfo(): void + { + $info = $this->readTestImage('trim.png')->__debugInfo(); + $this->assertArrayHasKey('width', $info); + $this->assertArrayHasKey('height', $info); + } } diff --git a/tests/Unit/EncodedImageTest.php b/tests/Unit/EncodedImageTest.php index 51fe2bf7c..c430dae64 100644 --- a/tests/Unit/EncodedImageTest.php +++ b/tests/Unit/EncodedImageTest.php @@ -57,4 +57,11 @@ public function testMimetype(): void $image = new EncodedImage($this->getTestResourceData(), 'image/jpeg'); $this->assertEquals('image/jpeg', $image->mimetype()); } + + public function testDebugInfo(): void + { + $info = (new EncodedImage('foo', 'image/png'))->__debugInfo(); + $this->assertEquals('image/png', $info['mimetype']); + $this->assertEquals(3, $info['size']); + } } diff --git a/tests/Unit/Geometry/RectangleTest.php b/tests/Unit/Geometry/RectangleTest.php index 636987339..fd1312447 100644 --- a/tests/Unit/Geometry/RectangleTest.php +++ b/tests/Unit/Geometry/RectangleTest.php @@ -325,4 +325,11 @@ public function testContainMax(): void $this->assertEquals(800, $result->width()); $this->assertEquals(600, $result->height()); } + + public function testDebugInfo(): void + { + $info = (new Rectangle(800, 600))->__debugInfo(); + $this->assertEquals(800, $info['width']); + $this->assertEquals(600, $info['height']); + } } From 86fe195a15a7094156b46df85b4e7cc172deefc3 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Mon, 16 Dec 2024 15:39:42 +0100 Subject: [PATCH 09/10] Implement __debugInfo() for Origin::class --- src/Origin.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Origin.php b/src/Origin.php index 4cd7a8e40..6857f3f19 100644 --- a/src/Origin.php +++ b/src/Origin.php @@ -17,6 +17,7 @@ public function __construct( protected string $mediaType = 'application/octet-stream', protected ?string $filePath = null ) { + // } /** @@ -85,4 +86,17 @@ public function fileExtension(): ?string { return empty($this->filePath) ? null : pathinfo($this->filePath, PATHINFO_EXTENSION); } + + /** + * Show debug info for the current image + * + * @return array + */ + public function __debugInfo(): array + { + return [ + 'mediaType' => $this->mediaType(), + 'filePath' => $this->filePath(), + ]; + } } From 1ddc9a096b3a641958515700e09be910bf03a5bd Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Mon, 16 Dec 2024 15:40:07 +0100 Subject: [PATCH 10/10] Rename debug info key for more consistency --- src/EncodedImage.php | 2 +- tests/Unit/EncodedImageTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EncodedImage.php b/src/EncodedImage.php index b2383b215..ffe210078 100644 --- a/src/EncodedImage.php +++ b/src/EncodedImage.php @@ -59,7 +59,7 @@ public function toDataUri(): string public function __debugInfo(): array { return [ - 'mimetype' => $this->mimetype(), + 'mediaType' => $this->mediaType(), 'size' => $this->size(), ]; } diff --git a/tests/Unit/EncodedImageTest.php b/tests/Unit/EncodedImageTest.php index c430dae64..b35726812 100644 --- a/tests/Unit/EncodedImageTest.php +++ b/tests/Unit/EncodedImageTest.php @@ -61,7 +61,7 @@ public function testMimetype(): void public function testDebugInfo(): void { $info = (new EncodedImage('foo', 'image/png'))->__debugInfo(); - $this->assertEquals('image/png', $info['mimetype']); + $this->assertEquals('image/png', $info['mediaType']); $this->assertEquals(3, $info['size']); } }