File: Image.factories.phpt

package info (click to toggle)
php-nette-utils 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,460 kB
  • sloc: php: 4,146; xml: 9; makefile: 4
file content (111 lines) | stat: -rw-r--r-- 2,998 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php

/**
 * Test: Nette\Utils\Image factories.
 * @phpExtension gd
 */

declare(strict_types=1);

use Nette\Utils\Image;
use Tester\Assert;


require __DIR__ . '/../bootstrap.php';


test('loading GIF image and detecting dimensions', function () {
	$image = Image::fromFile(__DIR__ . '/fixtures.images/logo.gif', $format);
	Assert::same(176, $image->getWidth());
	Assert::same(104, $image->getHeight());
	Assert::same(Image::GIF, $format);

	Assert::same(Image::GIF, Image::detectTypeFromFile(__DIR__ . '/fixtures.images/logo.gif', $w, $h));
	Assert::same(176, $w);
	Assert::same(104, $h);
});


test('loading WEBP image if supported', function () {
	if (!Image::isTypeSupported(Image::WEBP)) {
		return;
	}

	$image = Image::fromFile(__DIR__ . '/fixtures.images/logo.webp', $format);
	Assert::same(176, $image->getWidth());
	Assert::same(104, $image->getHeight());
	Assert::same(Image::WEBP, $format);
});


test('loading AVIF image if supported', function () {
	if (!Image::isTypeSupported(Image::AVIF)) {
		return;
	}

	$image = Image::fromFile(__DIR__ . '/fixtures.images/logo.avif', $format);
	Assert::same(176, $image->getWidth());
	Assert::same(104, $image->getHeight());
	Assert::same(Image::AVIF, $format);
});


Assert::exception(
	fn() => Image::fromFile('fixtures.images/missing.png'),
	Nette\Utils\UnknownImageFileException::class,
	"File 'fixtures.images/missing.png' not found.",
);


Assert::null(Image::detectTypeFromFile('fixtures.images/missing.png'));


Assert::exception(
	fn() => Image::fromFile(__DIR__ . '/fixtures.images/logo.tiff'),
	Nette\Utils\UnknownImageFileException::class,
	"Unknown type of file '%a%fixtures.images/logo.tiff'.",
);


Assert::exception(
	fn() => Image::fromFile(__DIR__ . '/fixtures.images/bad.gif'),
	Nette\Utils\ImageException::class,
	'%a% not a valid GIF file',
);


test('creating blank image with background color', function () {
	$image = Image::fromBlank(200, 300, Image::rgb(255, 128, 0));
	Assert::same(200, $image->getWidth());
	Assert::same(300, $image->getHeight());
});


test('creating image from empty GIF string and detecting type', function () {
	$image = Image::fromString(Image::EmptyGIF, $format);
	Assert::same(1, $image->getWidth());
	Assert::same(1, $image->getHeight());
	Assert::same(Image::GIF, $format);

	Assert::same(Image::GIF, Image::detectTypeFromString(Image::EmptyGIF, $w, $h));
	Assert::same(1, $w);
	Assert::same(1, $h);
});


Assert::exception(
	fn() => Image::fromString('abcdefg'),
	Nette\Utils\UnknownImageFileException::class,
);


Assert::null(Image::detectTypeFromString('x'));


Assert::same('webp', Image::typeToExtension(Image::WEBP));
Assert::same('jpeg', Image::typeToExtension(Image::JPEG));
Assert::same('image/webp', Image::typeToMimeType(Image::WEBP));
Assert::same('image/jpeg', Image::typeToMimeType(Image::JPEG));
Assert::same(Image::WEBP, Image::extensionToType('webp'));
Assert::same(Image::JPEG, Image::extensionToType('jpeg'));
Assert::same(Image::JPEG, Image::extensionToType('jpg'));