|
1 | 1 | <?php |
2 | | - |
3 | 2 | namespace CSD\Image\Tests\Format; |
4 | 3 |
|
5 | 4 | use CSD\Image\Format\JPEG; |
6 | 5 | use CSD\Image\Metadata\Xmp; |
7 | 6 |
|
8 | 7 | /** |
9 | | - * @author Daniel Chesterton <[email protected]> |
10 | | - * |
11 | 8 | * @coversDefaultClass \CSD\Image\Format\JPEG |
12 | 9 | */ |
13 | 10 | class JPEGTest extends \PHPUnit\Framework\TestCase |
14 | 11 | { |
15 | 12 | /** |
16 | | - * Test that JPEG can read XMP embedded with Photo Mechanic. |
| 13 | + * Data provider for testGetXmp method. |
| 14 | + * |
| 15 | + * @return array |
17 | 16 | */ |
18 | | - public function testGetXmpPhotoMechanic() |
| 17 | + public function providerTestGetXmp() |
19 | 18 | { |
20 | | - $jpeg = JPEG::fromFile(__DIR__ . '/../Fixtures/metapm.jpg'); |
21 | | - |
22 | | - $xmp = $jpeg->getXmp(); |
23 | | - |
24 | | - $this->assertInstanceOf(Xmp::class, $xmp); |
25 | | - $this->assertSame('Headline', $xmp->getHeadline()); |
| 19 | + return [ |
| 20 | + // [method, filename, expectedHeadline] |
| 21 | + ['fromFile', 'metapm.jpg', 'Headline'], |
| 22 | + ['fromString', 'metapm.jpg', 'Headline'], |
| 23 | + ['fromFile', 'metaphotoshop.jpg', 'Headline'], |
| 24 | + ['fromString', 'metaphotoshop.jpg', 'Headline'], |
| 25 | + ['fromFile', 'nometa.jpg', null], |
| 26 | + ['fromString', 'nometa.jpg', null], |
| 27 | + ]; |
26 | 28 | } |
27 | 29 |
|
28 | 30 | /** |
29 | | - * Test that JPEG can read XMP embedded with Photoshop. |
| 31 | + * Test that JPEG can read XMP data using both fromFile and fromString methods. |
| 32 | + * |
| 33 | + * @dataProvider providerTestGetXmp |
| 34 | + * |
| 35 | + * @param string $method The method to use ('fromFile' or 'fromString') |
| 36 | + * @param string $filename The filename of the test image |
| 37 | + * @param string|null $expectedHeadline The expected headline in the XMP data |
30 | 38 | */ |
31 | | - public function testGetXmpPhotoshop() |
| 39 | + public function testGetXmp($method, $filename, $expectedHeadline) |
32 | 40 | { |
33 | | - $jpeg = JPEG::fromFile(__DIR__ . '/../Fixtures/metaphotoshop.jpg'); |
| 41 | + $filePath = __DIR__ . '/../Fixtures/' . $filename; |
34 | 42 |
|
35 | | - $xmp = $jpeg->getXmp(); |
| 43 | + if ($method === 'fromFile') { |
| 44 | + $jpeg = JPEG::fromFile($filePath); |
| 45 | + } elseif ($method === 'fromString') { |
| 46 | + $string = file_get_contents($filePath); |
| 47 | + $jpeg = JPEG::fromString($string); |
| 48 | + } else { |
| 49 | + throw new \InvalidArgumentException("Invalid method: $method"); |
| 50 | + } |
36 | 51 |
|
37 | | - $this->assertInstanceOf(Xmp::class, $xmp); |
38 | | - $this->assertSame('Headline', $xmp->getHeadline()); |
39 | | - } |
40 | | - |
41 | | - /** |
42 | | - * Test that JPEG class returns an empty XMP object when there is no XMP data. |
43 | | - */ |
44 | | - public function testGetXmpNoMeta() |
45 | | - { |
46 | | - $jpeg = JPEG::fromFile(__DIR__ . '/../Fixtures/nometa.jpg'); |
| 52 | + $this->assertInstanceOf(JPEG::class, $jpeg); |
| 53 | + $this->assertGreaterThan(0, $jpeg->getSize()["width"]); |
| 54 | + $this->assertGreaterThan(0, $jpeg->getSize()["height"]); |
47 | 55 |
|
48 | 56 | $xmp = $jpeg->getXmp(); |
49 | 57 |
|
50 | 58 | $this->assertInstanceOf(Xmp::class, $xmp); |
51 | | - $this->assertNull($xmp->getHeadline()); |
| 59 | + $this->assertSame($expectedHeadline, $xmp->getHeadline()); |
52 | 60 | } |
53 | 61 | } |
| 62 | + |
0 commit comments