Image.factories.phpt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Image factories.
  4. * @phpExtension gd
  5. */
  6. declare(strict_types=1);
  7. use Nette\Utils\Image;
  8. use Tester\Assert;
  9. require __DIR__ . '/../bootstrap.php';
  10. test('', function () {
  11. $image = Image::fromFile(__DIR__ . '/fixtures.images/logo.gif', $format);
  12. Assert::same(176, $image->getWidth());
  13. Assert::same(104, $image->getHeight());
  14. Assert::same(Image::GIF, $format);
  15. Assert::same(Image::GIF, Image::detectTypeFromFile(__DIR__ . '/fixtures.images/logo.gif', $w, $h));
  16. Assert::same(176, $w);
  17. Assert::same(104, $h);
  18. });
  19. test('', function () {
  20. if (!Image::isTypeSupported(Image::WEBP)) {
  21. return;
  22. }
  23. $image = Image::fromFile(__DIR__ . '/fixtures.images/logo.webp', $format);
  24. Assert::same(176, $image->getWidth());
  25. Assert::same(104, $image->getHeight());
  26. Assert::same(Image::WEBP, $format);
  27. });
  28. test('', function () {
  29. if (!Image::isTypeSupported(Image::AVIF)) {
  30. return;
  31. }
  32. $image = Image::fromFile(__DIR__ . '/fixtures.images/logo.avif', $format);
  33. Assert::same(176, $image->getWidth());
  34. Assert::same(104, $image->getHeight());
  35. Assert::same(Image::AVIF, $format);
  36. });
  37. Assert::exception(
  38. fn() => Image::fromFile('fixtures.images/missing.png'),
  39. Nette\Utils\UnknownImageFileException::class,
  40. "File 'fixtures.images/missing.png' not found.",
  41. );
  42. Assert::null(Image::detectTypeFromFile('fixtures.images/missing.png'));
  43. Assert::exception(
  44. fn() => Image::fromFile(__DIR__ . '/fixtures.images/logo.tiff'),
  45. Nette\Utils\UnknownImageFileException::class,
  46. "Unknown type of file '%a%fixtures.images/logo.tiff'.",
  47. );
  48. Assert::exception(
  49. fn() => Image::fromFile(__DIR__ . '/fixtures.images/bad.gif'),
  50. Nette\Utils\ImageException::class,
  51. '%a% not a valid GIF file',
  52. );
  53. test('', function () {
  54. $image = Image::fromBlank(200, 300, Image::rgb(255, 128, 0));
  55. Assert::same(200, $image->getWidth());
  56. Assert::same(300, $image->getHeight());
  57. });
  58. test('', function () {
  59. $image = Image::fromString(Image::EmptyGIF, $format);
  60. Assert::same(1, $image->getWidth());
  61. Assert::same(1, $image->getHeight());
  62. Assert::same(Image::GIF, $format);
  63. Assert::same(Image::GIF, Image::detectTypeFromString(Image::EmptyGIF, $w, $h));
  64. Assert::same(1, $w);
  65. Assert::same(1, $h);
  66. });
  67. Assert::exception(
  68. fn() => Image::fromString('abcdefg'),
  69. Nette\Utils\UnknownImageFileException::class,
  70. );
  71. Assert::null(Image::detectTypeFromString('x'));
  72. Assert::same('webp', Image::typeToExtension(Image::WEBP));
  73. Assert::same('jpeg', Image::typeToExtension(Image::JPEG));
  74. Assert::same('image/webp', Image::typeToMimeType(Image::WEBP));
  75. Assert::same('image/jpeg', Image::typeToMimeType(Image::JPEG));
  76. Assert::same(Image::WEBP, Image::extensionToType('webp'));
  77. Assert::same(Image::JPEG, Image::extensionToType('jpeg'));
  78. Assert::same(Image::JPEG, Image::extensionToType('jpg'));