Existing srgb.jpg & tinyrgb.jpg have been replaced to be able to
easily compare a "fixed" missingprofile.jpg to tinyrgb.jpg.
With the existing files, when the tinyrgb profile was added to
missingprofile.jpg, it would end up basically the same as tinyrgb.jpg,
except that not all the exif data would be in the exact same order.
I've rebuilt srgb.jpg & tinyrgb.jpg by first removing their profile
(which is what missingprofile.jpg is), and then copying it over again:
exiftool -tagsfromfile srgb.jpg -ICC_Profile new_srgb.jpg
Meanwhile also moved the profile-swapping code to JpegHandler, as it
was jpeg-specific.
Bug: T134498
Change-Id: I722dd6f66f6007182ad9a215e5eb382776983c05
145 lines
5.4 KiB
PHP
145 lines
5.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group Media
|
|
*/
|
|
class ExifBitmapTest extends MediaWikiMediaTestCase {
|
|
|
|
/**
|
|
* @var ExifBitmapHandler
|
|
*/
|
|
protected $handler;
|
|
|
|
protected function setUp() {
|
|
parent::setUp();
|
|
$this->checkPHPExtension( 'exif' );
|
|
|
|
$this->setMwGlobals( 'wgShowEXIF', true );
|
|
|
|
$this->handler = new ExifBitmapHandler;
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testIsOldBroken() {
|
|
$res = $this->handler->isMetadataValid( null, ExifBitmapHandler::OLD_BROKEN_FILE );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testIsBrokenFile() {
|
|
$res = $this->handler->isMetadataValid( null, ExifBitmapHandler::BROKEN_FILE );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testIsInvalid() {
|
|
$res = $this->handler->isMetadataValid( null, 'Something Invalid Here.' );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testGoodMetadata() {
|
|
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
|
|
$meta = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
|
|
// @codingStandardsIgnoreEnd
|
|
$res = $this->handler->isMetadataValid( null, $meta );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testIsOldGood() {
|
|
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
|
|
$meta = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:1;}';
|
|
// @codingStandardsIgnoreEnd
|
|
$res = $this->handler->isMetadataValid( null, $meta );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
|
|
}
|
|
|
|
/**
|
|
* Handle metadata from paged tiff handler (gotten via instant commons) gracefully.
|
|
* @covers ExifBitmapHandler::isMetadataValid
|
|
*/
|
|
public function testPagedTiffHandledGracefully() {
|
|
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
|
|
$meta = 'a:6:{s:9:"page_data";a:1:{i:1;a:5:{s:5:"width";i:643;s:6:"height";i:448;s:5:"alpha";s:4:"true";s:4:"page";i:1;s:6:"pixels";i:288064;}}s:10:"page_count";i:1;s:10:"first_page";i:1;s:9:"last_page";i:1;s:4:"exif";a:9:{s:10:"ImageWidth";i:643;s:11:"ImageLength";i:448;s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:4;s:12:"RowsPerStrip";i:50;s:19:"PlanarConfiguration";i:1;s:22:"MEDIAWIKI_EXIF_VERSION";i:1;}s:21:"TIFF_METADATA_VERSION";s:3:"1.4";}';
|
|
// @codingStandardsIgnoreEnd
|
|
$res = $this->handler->isMetadataValid( null, $meta );
|
|
$this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::convertMetadataVersion
|
|
*/
|
|
public function testConvertMetadataLatest() {
|
|
$metadata = [
|
|
'foo' => [ 'First', 'Second', '_type' => 'ol' ],
|
|
'MEDIAWIKI_EXIF_VERSION' => 2
|
|
];
|
|
$res = $this->handler->convertMetadataVersion( $metadata, 2 );
|
|
$this->assertEquals( $metadata, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::convertMetadataVersion
|
|
*/
|
|
public function testConvertMetadataToOld() {
|
|
$metadata = [
|
|
'foo' => [ 'First', 'Second', '_type' => 'ol' ],
|
|
'bar' => [ 'First', 'Second', '_type' => 'ul' ],
|
|
'baz' => [ 'First', 'Second' ],
|
|
'fred' => 'Single',
|
|
'MEDIAWIKI_EXIF_VERSION' => 2,
|
|
];
|
|
$expected = [
|
|
'foo' => "\n#First\n#Second",
|
|
'bar' => "\n*First\n*Second",
|
|
'baz' => "\n*First\n*Second",
|
|
'fred' => 'Single',
|
|
'MEDIAWIKI_EXIF_VERSION' => 1,
|
|
];
|
|
$res = $this->handler->convertMetadataVersion( $metadata, 1 );
|
|
$this->assertEquals( $expected, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::convertMetadataVersion
|
|
*/
|
|
public function testConvertMetadataSoftware() {
|
|
$metadata = [
|
|
'Software' => [ [ 'GIMP', '1.1' ] ],
|
|
'MEDIAWIKI_EXIF_VERSION' => 2,
|
|
];
|
|
$expected = [
|
|
'Software' => 'GIMP (Version 1.1)',
|
|
'MEDIAWIKI_EXIF_VERSION' => 1,
|
|
];
|
|
$res = $this->handler->convertMetadataVersion( $metadata, 1 );
|
|
$this->assertEquals( $expected, $res );
|
|
}
|
|
|
|
/**
|
|
* @covers ExifBitmapHandler::convertMetadataVersion
|
|
*/
|
|
public function testConvertMetadataSoftwareNormal() {
|
|
$metadata = [
|
|
'Software' => [ "GIMP 1.2", "vim" ],
|
|
'MEDIAWIKI_EXIF_VERSION' => 2,
|
|
];
|
|
$expected = [
|
|
'Software' => "\n*GIMP 1.2\n*vim",
|
|
'MEDIAWIKI_EXIF_VERSION' => 1,
|
|
];
|
|
$res = $this->handler->convertMetadataVersion( $metadata, 1 );
|
|
$this->assertEquals( $expected, $res );
|
|
}
|
|
}
|