wiki.techinc.nl/tests/phpunit/includes/media/GIFMetadataExtractorTest.php
Gilles Dubuc cdfe08439c Store original media dimensions as additional header
For storage repos that support headers (such as Swift), this will store the original
media dimensions as an extra custom header, X-Content-Dimensions.
The header is formatted to minimize its length when dealing with multipage
documents, by expressing the information as page ranges keyed by dimensions.

Example for a multipage documents with some pages of different sizes:
X-Content-Dimensions: 1903x899:1-9,11/1903x873:10

Example for a single page document:
X-Content-Dimensions: 800x600:1

Bug: T150741
Change-Id: Ic4c6a86557b3705cf75d074753e9ce2ee070a6df
2017-05-09 15:49:28 -07:00

117 lines
4.5 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @group Media
*/
class GIFMetadataExtractorTest extends MediaWikiTestCase {
protected function setUp() {
parent::setUp();
$this->mediaPath = __DIR__ . '/../../data/media/';
}
/**
* Put in a file, and see if the metadata coming out is as expected.
* @param string $filename
* @param array $expected The extracted metadata.
* @dataProvider provideGetMetadata
* @covers GIFMetadataExtractor::getMetadata
*/
public function testGetMetadata( $filename, $expected ) {
$actual = GIFMetadataExtractor::getMetadata( $this->mediaPath . $filename );
$this->assertEquals( $expected, $actual );
}
public static function provideGetMetadata() {
$xmpNugget = <<<EOF
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.30'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
<Iptc4xmpCore:Location>The interwebs</Iptc4xmpCore:Location>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
<tiff:Artist>Bawolff</tiff:Artist>
<tiff:ImageDescription>
<rdf:Alt>
<rdf:li xml:lang='x-default'>A file to test GIF</rdf:li>
</rdf:Alt>
</tiff:ImageDescription>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>
EOF;
$xmpNugget = str_replace( "\r", '', $xmpNugget ); // Windows compat
return [
[
'nonanimated.gif',
[
'comment' => [ 'GIF test file ⁕ Created with GIMP' ],
'duration' => 0.1,
'frameCount' => 1,
'looped' => false,
'xmp' => '',
'width' => 45,
'height' => 30,
]
],
[
'animated.gif',
[
'comment' => [ 'GIF test file . Created with GIMP' ],
'duration' => 2.4,
'frameCount' => 4,
'looped' => true,
'xmp' => '',
'width' => 45,
'height' => 30,
]
],
[
'animated-xmp.gif',
[
'xmp' => $xmpNugget,
'duration' => 2.4,
'frameCount' => 4,
'looped' => true,
'comment' => [ 'GIƒ·test·file' ],
'width' => 45,
'height' => 30,
]
],
];
}
}