|
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