diff --git a/tests/Drivers/Gd/Decoders/Base64ImageDecoderTest.php b/tests/Drivers/Gd/Decoders/Base64ImageDecoderTest.php index 733ec18b..a5e186bc 100644 --- a/tests/Drivers/Gd/Decoders/Base64ImageDecoderTest.php +++ b/tests/Drivers/Gd/Decoders/Base64ImageDecoderTest.php @@ -3,9 +3,9 @@ namespace Intervention\Image\Tests\Drivers\Gd\Decoders; use Intervention\Image\Drivers\Gd\Decoders\Base64ImageDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Tests\TestCase; -use Intervention\Image\Tests\Traits\CanCreateGdTestImage; /** * @requires extension gd @@ -13,14 +13,25 @@ use Intervention\Image\Tests\Traits\CanCreateGdTestImage; */ class Base64ImageDecoderTest extends TestCase { - use CanCreateGdTestImage; + protected Base64ImageDecoder $decoder; + + public function setUp(): void + { + $this->decoder = new Base64ImageDecoder(); + } public function testDecode(): void { - $decoder = new Base64ImageDecoder(); - $result = $decoder->decode( + $result = $this->decoder->decode( base64_encode($this->getTestImageData('blue.gif')) ); + $this->assertInstanceOf(Image::class, $result); } + + public function testDecoderInvalid(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('test'); + } } diff --git a/tests/Drivers/Gd/Decoders/DataUriImageDecoderTest.php b/tests/Drivers/Gd/Decoders/DataUriImageDecoderTest.php index 4a807d78..e4d86edb 100644 --- a/tests/Drivers/Gd/Decoders/DataUriImageDecoderTest.php +++ b/tests/Drivers/Gd/Decoders/DataUriImageDecoderTest.php @@ -3,9 +3,10 @@ namespace Intervention\Image\Tests\Drivers\Gd\Decoders; use Intervention\Image\Drivers\Gd\Decoders\DataUriImageDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Tests\TestCase; -use Intervention\Image\Tests\Traits\CanCreateGdTestImage; +use stdClass; /** * @requires extension gd @@ -13,14 +14,37 @@ use Intervention\Image\Tests\Traits\CanCreateGdTestImage; */ class DataUriImageDecoderTest extends TestCase { - use CanCreateGdTestImage; + protected DataUriImageDecoder $decoder; + + public function setUp(): void + { + $this->decoder = new DataUriImageDecoder(); + } public function testDecode(): void { - $decoder = new DataUriImageDecoder(); - $result = $decoder->decode( + $result = $this->decoder->decode( sprintf('data:image/jpeg;base64,%s', base64_encode($this->getTestImageData('blue.gif'))) ); + $this->assertInstanceOf(Image::class, $result); } + + public function testDecoderNonString(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(new stdClass()); + } + + public function testDecoderInvalid(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('invalid'); + } + + public function testDecoderNonImage(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('data:text/plain;charset=utf-8,test'); + } } diff --git a/tests/Drivers/Gd/Decoders/FilePathImageDecoderTest.php b/tests/Drivers/Gd/Decoders/FilePathImageDecoderTest.php index 16fa6b2a..b24cea6b 100644 --- a/tests/Drivers/Gd/Decoders/FilePathImageDecoderTest.php +++ b/tests/Drivers/Gd/Decoders/FilePathImageDecoderTest.php @@ -3,9 +3,10 @@ namespace Intervention\Image\Tests\Drivers\Gd\Decoders; use Intervention\Image\Drivers\Gd\Decoders\FilePathImageDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Tests\TestCase; -use Intervention\Image\Tests\Traits\CanCreateGdTestImage; +use stdClass; /** * @requires extension gd @@ -13,14 +14,37 @@ use Intervention\Image\Tests\Traits\CanCreateGdTestImage; */ class FilePathImageDecoderTest extends TestCase { - use CanCreateGdTestImage; + protected FilePathImageDecoder $decoder; + + public function setUp(): void + { + $this->decoder = new FilePathImageDecoder(); + } public function testDecode(): void { - $decoder = new FilePathImageDecoder(); - $result = $decoder->decode( + $result = $this->decoder->decode( $this->getTestImagePath() ); + $this->assertInstanceOf(Image::class, $result); } + + public function testDecoderNonString(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(new stdClass()); + } + + public function testDecoderNoPath(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('no-path'); + } + + public function testDecoderTooLongPath(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(str_repeat('x', PHP_MAXPATHLEN + 1)); + } } diff --git a/tests/Drivers/Gd/Decoders/SplFileInfoImageDecoder.php b/tests/Drivers/Gd/Decoders/SplFileInfoImageDecoder.php new file mode 100644 index 00000000..241fbf10 --- /dev/null +++ b/tests/Drivers/Gd/Decoders/SplFileInfoImageDecoder.php @@ -0,0 +1,24 @@ +decode( + new SplFileInfo($this->getTestImagePath('blue.gif')) + ); + $this->assertInstanceOf(Image::class, $result); + } +} diff --git a/tests/Drivers/Gd/Encoders/AvifEncoderTest.php b/tests/Drivers/Gd/Encoders/AvifEncoderTest.php index 464c019b..60daea50 100644 --- a/tests/Drivers/Gd/Encoders/AvifEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/AvifEncoderTest.php @@ -11,6 +11,7 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\AvifEncoder * @covers \Intervention\Image\Drivers\Gd\Encoders\AvifEncoder */ class AvifEncoderTest extends TestCase diff --git a/tests/Drivers/Gd/Encoders/BmpEncoderTest.php b/tests/Drivers/Gd/Encoders/BmpEncoderTest.php index 8067c0f8..5fcf32f0 100644 --- a/tests/Drivers/Gd/Encoders/BmpEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/BmpEncoderTest.php @@ -11,6 +11,7 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\BmpEncoder * @covers \Intervention\Image\Drivers\Gd\Encoders\BmpEncoder */ class BmpEncoderTest extends TestCase diff --git a/tests/Drivers/Gd/Encoders/GifEncoderTest.php b/tests/Drivers/Gd/Encoders/GifEncoderTest.php index fb4bc541..3f2aa3eb 100644 --- a/tests/Drivers/Gd/Encoders/GifEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/GifEncoderTest.php @@ -12,6 +12,7 @@ use Intervention\Image\Tests\Traits\CanCreateGdTestImage; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\GifEncoder * @covers \Intervention\Image\Drivers\Gd\Encoders\GifEncoder */ class GifEncoderTest extends TestCase diff --git a/tests/Drivers/Gd/Encoders/JpegEncoderTest.php b/tests/Drivers/Gd/Encoders/JpegEncoderTest.php index a9c649b6..dc30dc50 100644 --- a/tests/Drivers/Gd/Encoders/JpegEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/JpegEncoderTest.php @@ -11,6 +11,7 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\JpegEncoder * @covers \Intervention\Image\Drivers\Gd\Encoders\JpegEncoder */ class JpegEncoderTest extends TestCase diff --git a/tests/Drivers/Gd/Encoders/PngEncoderTest.php b/tests/Drivers/Gd/Encoders/PngEncoderTest.php index d6f3ca8a..5a8cc7b1 100644 --- a/tests/Drivers/Gd/Encoders/PngEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/PngEncoderTest.php @@ -12,6 +12,7 @@ use Intervention\Image\Tests\Traits\CanCreateGdTestImage; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\PngEncoder * @covers \Intervention\Image\Drivers\Gd\Encoders\PngEncoder */ class PngEncoderTest extends TestCase diff --git a/tests/Drivers/Gd/Encoders/WebpEncoderTest.php b/tests/Drivers/Gd/Encoders/WebpEncoderTest.php index 86736ae1..579ca831 100644 --- a/tests/Drivers/Gd/Encoders/WebpEncoderTest.php +++ b/tests/Drivers/Gd/Encoders/WebpEncoderTest.php @@ -13,6 +13,8 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension gd + * @covers \Intervention\Image\Encoders\WebpEncoder + * @covers \Intervention\Image\Drivers\Gd\Encoders\WebpEncoder */ final class WebpEncoderTest extends TestCase { diff --git a/tests/Drivers/Gd/Modifiers/ContainModifierTest.php b/tests/Drivers/Gd/Modifiers/ContainModifierTest.php index a484e664..f1486d46 100644 --- a/tests/Drivers/Gd/Modifiers/ContainModifierTest.php +++ b/tests/Drivers/Gd/Modifiers/ContainModifierTest.php @@ -7,7 +7,7 @@ use Intervention\Image\Tests\TestCase; use Intervention\Image\Tests\Traits\CanCreateGdTestImage; /** - * @requires extension imagick + * @requires extension gd * @covers \Intervention\Image\Modifiers\ContainModifier * @covers \Intervention\Image\Drivers\Gd\Modifiers\ContainModifier */ diff --git a/tests/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php b/tests/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php new file mode 100644 index 00000000..0820917c --- /dev/null +++ b/tests/Drivers/Imagick/Decoders/Base64ImageDecoderTest.php @@ -0,0 +1,37 @@ +decoder = new Base64ImageDecoder(); + } + + public function testDecode(): void + { + $result = $this->decoder->decode( + base64_encode($this->getTestImageData('blue.gif')) + ); + + $this->assertInstanceOf(Image::class, $result); + } + + public function testDecoderInvalid(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('test'); + } +} diff --git a/tests/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php b/tests/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php index a109ce86..c58c0412 100644 --- a/tests/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php +++ b/tests/Drivers/Imagick/Decoders/BinaryImageDecoderTest.php @@ -5,8 +5,10 @@ namespace Intervention\Image\Tests\Drivers\Imagick\Decoders; use Intervention\Image\Colors\Cmyk\Colorspace as CmykColorspace; use Intervention\Image\Colors\Rgb\Colorspace as RgbColorspace; use Intervention\Image\Drivers\Imagick\Decoders\BinaryImageDecoder; +use Intervention\Image\Exceptions\DecoderException; use Intervention\Image\Image; use Intervention\Image\Tests\TestCase; +use stdClass; class BinaryImageDecoderTest extends TestCase { @@ -59,4 +61,11 @@ class BinaryImageDecoderTest extends TestCase $this->assertInstanceOf(Image::class, $image); $this->assertInstanceOf(CmykColorspace::class, $image->colorspace()); } + + public function testDecodeNonString(): void + { + $decoder = new BinaryImageDecoder(); + $this->expectException(DecoderException::class); + $decoder->decode(new stdClass()); + } } diff --git a/tests/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php b/tests/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php new file mode 100644 index 00000000..df55580b --- /dev/null +++ b/tests/Drivers/Imagick/Decoders/DataUriImageDecoderTest.php @@ -0,0 +1,50 @@ +decoder = new DataUriImageDecoder(); + } + + public function testDecode(): void + { + $result = $this->decoder->decode( + sprintf('data:image/jpeg;base64,%s', base64_encode($this->getTestImageData('blue.gif'))) + ); + + $this->assertInstanceOf(Image::class, $result); + } + + public function testDecoderNonString(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(new stdClass()); + } + + public function testDecoderInvalid(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('invalid'); + } + + public function testDecoderNonImage(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('data:text/plain;charset=utf-8,test'); + } +} diff --git a/tests/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php b/tests/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php new file mode 100644 index 00000000..1501ac8b --- /dev/null +++ b/tests/Drivers/Imagick/Decoders/FilePathImageDecoderTest.php @@ -0,0 +1,50 @@ +decoder = new FilePathImageDecoder(); + } + + public function testDecode(): void + { + $result = $this->decoder->decode( + $this->getTestImagePath() + ); + + $this->assertInstanceOf(Image::class, $result); + } + + public function testDecoderNonString(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(new stdClass()); + } + + public function testDecoderNoPath(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode('no-path'); + } + + public function testDecoderTooLongPath(): void + { + $this->expectException(DecoderException::class); + $this->decoder->decode(str_repeat('x', PHP_MAXPATHLEN + 1)); + } +} diff --git a/tests/Drivers/Imagick/Decoders/SplFileInfoDecoderTest.php b/tests/Drivers/Imagick/Decoders/SplFileInfoDecoderTest.php new file mode 100644 index 00000000..34df14c6 --- /dev/null +++ b/tests/Drivers/Imagick/Decoders/SplFileInfoDecoderTest.php @@ -0,0 +1,24 @@ +decode( + new SplFileInfo($this->getTestImagePath('blue.gif')) + ); + $this->assertInstanceOf(Image::class, $result); + } +} diff --git a/tests/Drivers/Imagick/Encoders/AvifEncoderTest.php b/tests/Drivers/Imagick/Encoders/AvifEncoderTest.php index 3a92abba..3923a7b1 100644 --- a/tests/Drivers/Imagick/Encoders/AvifEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/AvifEncoderTest.php @@ -12,6 +12,7 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\AvifEncoder * @covers \Intervention\Image\Drivers\Imagick\Encoders\AvifEncoder */ class AvifEncoderTest extends TestCase diff --git a/tests/Drivers/Imagick/Encoders/BmpEncoderTest.php b/tests/Drivers/Imagick/Encoders/BmpEncoderTest.php index e22f95bc..9bb3da65 100644 --- a/tests/Drivers/Imagick/Encoders/BmpEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/BmpEncoderTest.php @@ -13,7 +13,8 @@ use Intervention\Image\Tests\Traits\CanCreateImagickTestImage; /** * @requires extension imagick - * @covers \Intervention\Image\Drivers\Imagick\Encoders\JpegEncoder + * @covers \Intervention\Image\Encoders\BmpEncoder + * @covers \Intervention\Image\Drivers\Imagick\Encoders\BmpEncoder */ class BmpEncoderTest extends TestCase { diff --git a/tests/Drivers/Imagick/Encoders/GifEncoderTest.php b/tests/Drivers/Imagick/Encoders/GifEncoderTest.php index 9989f4d0..e0c1e51f 100644 --- a/tests/Drivers/Imagick/Encoders/GifEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/GifEncoderTest.php @@ -13,6 +13,7 @@ use Intervention\Image\Tests\Traits\CanCreateImagickTestImage; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\GifEncoder * @covers \Intervention\Image\Drivers\Imagick\Encoders\GifEncoder */ class GifEncoderTest extends TestCase diff --git a/tests/Drivers/Imagick/Encoders/HeicEncoderTest.php b/tests/Drivers/Imagick/Encoders/HeicEncoderTest.php index 47d61a44..d4b171ad 100644 --- a/tests/Drivers/Imagick/Encoders/HeicEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/HeicEncoderTest.php @@ -15,6 +15,8 @@ use Intervention\Image\Tests\Traits\CanCreateImagickTestImage; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\HeicEncoder + * @covers \Intervention\Image\Drivers\Imagick\Encoders\HeicEncoder */ final class HeicEncoderTest extends TestCase { diff --git a/tests/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php b/tests/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php new file mode 100644 index 00000000..3cc6ceb5 --- /dev/null +++ b/tests/Drivers/Imagick/Encoders/Jpeg2000EncoderTest.php @@ -0,0 +1,38 @@ +newImage(3, 2, new ImagickPixel('red'), 'png'); + + return new Image( + new Driver(), + new Core($imagick) + ); + } + + public function testEncode(): void + { + $image = $this->getTestImage(); + $encoder = new Jpeg2000Encoder(75); + $result = $encoder->encode($image); + $this->assertMediaType('image/jp2', (string) $result); + } +} diff --git a/tests/Drivers/Imagick/Encoders/JpegEncoderTest.php b/tests/Drivers/Imagick/Encoders/JpegEncoderTest.php index 533306d7..5b8dccdd 100644 --- a/tests/Drivers/Imagick/Encoders/JpegEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/JpegEncoderTest.php @@ -12,6 +12,7 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\JpegEncoder * @covers \Intervention\Image\Drivers\Imagick\Encoders\JpegEncoder */ class JpegEncoderTest extends TestCase diff --git a/tests/Drivers/Imagick/Encoders/PngEncoderTest.php b/tests/Drivers/Imagick/Encoders/PngEncoderTest.php index 08cff0f6..f58b38c7 100644 --- a/tests/Drivers/Imagick/Encoders/PngEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/PngEncoderTest.php @@ -15,6 +15,8 @@ use Intervention\Image\Tests\Traits\CanCreateImagickTestImage; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\PngEncoder + * @covers \Intervention\Image\Drivers\Imagick\Encoders\PngEncoder */ final class PngEncoderTest extends TestCase { diff --git a/tests/Drivers/Imagick/Encoders/TiffEncoderTest.php b/tests/Drivers/Imagick/Encoders/TiffEncoderTest.php new file mode 100644 index 00000000..d03e8a40 --- /dev/null +++ b/tests/Drivers/Imagick/Encoders/TiffEncoderTest.php @@ -0,0 +1,40 @@ +newImage(3, 2, new ImagickPixel('red'), 'png'); + + return new Image( + new Driver(), + new Core($imagick) + ); + } + + public function testEncode(): void + { + $image = $this->getTestImage(); + $encoder = new TiffEncoder(); + $result = $encoder->encode($image); + $this->assertMediaType('image/tiff', (string) $result); + } +} diff --git a/tests/Drivers/Imagick/Encoders/WebpEncoderTest.php b/tests/Drivers/Imagick/Encoders/WebpEncoderTest.php index 9397665a..5a4991fc 100644 --- a/tests/Drivers/Imagick/Encoders/WebpEncoderTest.php +++ b/tests/Drivers/Imagick/Encoders/WebpEncoderTest.php @@ -14,6 +14,8 @@ use Intervention\Image\Tests\TestCase; /** * @requires extension imagick + * @covers \Intervention\Image\Encoders\WebpEncoder + * @covers \Intervention\Image\Drivers\Imagick\Encoders\WebpEncoder */ final class WebpEncoderTest extends TestCase {