2011-07-11 16:42:15 +00:00
< ? php
2011-07-20 15:24:21 +00:00
2011-07-11 16:42:15 +00:00
class ExifBitmapTest extends MediaWikiTestCase {
2013-10-23 22:12:39 +00:00
/**
* @ var ExifBitmapHandler
*/
protected $handler ;
2012-10-08 10:56:20 +00:00
protected function setUp () {
parent :: setUp ();
2013-11-23 19:20:23 +00:00
$this -> checkPHPExtension ( 'exif' );
2012-10-08 10:56:20 +00:00
$this -> setMwGlobals ( 'wgShowEXIF' , true );
2011-08-21 18:05:34 +00:00
$this -> handler = new ExifBitmapHandler ;
2013-10-09 16:46:57 +00:00
2011-07-20 15:33:46 +00:00
}
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testIsOldBroken () {
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , ExifBitmapHandler :: OLD_BROKEN_FILE );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_COMPATIBLE , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testIsBrokenFile () {
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , ExifBitmapHandler :: BROKEN_FILE );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_GOOD , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testIsInvalid () {
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , 'Something Invalid Here.' );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_BAD , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testGoodMetadata () {
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
2011-07-11 16:42:15 +00:00
$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;}' ;
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreEnd
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , $meta );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_GOOD , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testIsOldGood () {
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
2011-07-11 16:42:15 +00:00
$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;}' ;
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreEnd
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , $meta );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_COMPATIBLE , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* Handle metadata from paged tiff handler ( gotten via instant commons ) gracefully .
* @ covers ExifBitmapHandler :: isMetadataValid
*/
2011-07-11 16:42:15 +00:00
public function testPagedTiffHandledGracefully () {
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
2011-07-11 16:42:15 +00:00
$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";}' ;
2014-04-24 17:51:33 +00:00
// @codingStandardsIgnoreEnd
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> isMetadataValid ( null , $meta );
2011-07-11 16:42:15 +00:00
$this -> assertEquals ( ExifBitmapHandler :: METADATA_BAD , $res );
}
2011-08-21 18:05:34 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: convertMetadataVersion
*/
public function testConvertMetadataLatest () {
2011-08-21 18:05:34 +00:00
$metadata = array (
2013-02-15 10:17:52 +00:00
'foo' => array ( 'First' , 'Second' , '_type' => 'ol' ),
'MEDIAWIKI_EXIF_VERSION' => 2
);
2011-08-21 18:05:34 +00:00
$res = $this -> handler -> convertMetadataVersion ( $metadata , 2 );
$this -> assertEquals ( $metadata , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: convertMetadataVersion
*/
public function testConvertMetadataToOld () {
2011-08-21 18:05:34 +00:00
$metadata = array (
'foo' => array ( 'First' , 'Second' , '_type' => 'ol' ),
'bar' => array ( 'First' , 'Second' , '_type' => 'ul' ),
'baz' => array ( 'First' , 'Second' ),
'fred' => 'Single' ,
'MEDIAWIKI_EXIF_VERSION' => 2 ,
);
$expected = array (
'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 );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: convertMetadataVersion
*/
public function testConvertMetadataSoftware () {
2011-08-21 18:05:34 +00:00
$metadata = array (
2013-02-15 10:17:52 +00:00
'Software' => array ( array ( 'GIMP' , '1.1' ) ),
2011-08-21 18:05:34 +00:00
'MEDIAWIKI_EXIF_VERSION' => 2 ,
);
$expected = array (
'Software' => 'GIMP (Version 1.1)' ,
'MEDIAWIKI_EXIF_VERSION' => 1 ,
);
$res = $this -> handler -> convertMetadataVersion ( $metadata , 1 );
$this -> assertEquals ( $expected , $res );
}
2012-10-08 10:56:20 +00:00
2013-10-23 22:12:39 +00:00
/**
* @ covers ExifBitmapHandler :: convertMetadataVersion
*/
public function testConvertMetadataSoftwareNormal () {
2011-08-21 18:05:34 +00:00
$metadata = array (
'Software' => array ( " GIMP 1.2 " , " vim " ),
'MEDIAWIKI_EXIF_VERSION' => 2 ,
);
$expected = array (
'Software' => " \n *GIMP 1.2 \n *vim " ,
'MEDIAWIKI_EXIF_VERSION' => 1 ,
);
$res = $this -> handler -> convertMetadataVersion ( $metadata , 1 );
$this -> assertEquals ( $expected , $res );
}
2011-07-11 16:42:15 +00:00
}