MediaWiki  REL1_23
ExifBitmapTest.php
Go to the documentation of this file.
00001 <?php
00002 
00003 class ExifBitmapTest extends MediaWikiTestCase {
00004 
00008     protected $handler;
00009 
00010     protected function setUp() {
00011         parent::setUp();
00012         $this->checkPHPExtension( 'exif' );
00013 
00014         $this->setMwGlobals( 'wgShowEXIF', true );
00015 
00016         $this->handler = new ExifBitmapHandler;
00017 
00018     }
00019 
00023     public function testIsOldBroken() {
00024         $res = $this->handler->isMetadataValid( null, ExifBitmapHandler::OLD_BROKEN_FILE );
00025         $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
00026     }
00027 
00031     public function testIsBrokenFile() {
00032         $res = $this->handler->isMetadataValid( null, ExifBitmapHandler::BROKEN_FILE );
00033         $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
00034     }
00035 
00039     public function testIsInvalid() {
00040         $res = $this->handler->isMetadataValid( null, 'Something Invalid Here.' );
00041         $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
00042     }
00043 
00047     public function testGoodMetadata() {
00048         $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;}';
00049         $res = $this->handler->isMetadataValid( null, $meta );
00050         $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
00051     }
00052 
00056     public function testIsOldGood() {
00057         $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;}';
00058         $res = $this->handler->isMetadataValid( null, $meta );
00059         $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
00060     }
00061 
00066     public function testPagedTiffHandledGracefully() {
00067         $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";}';
00068         $res = $this->handler->isMetadataValid( null, $meta );
00069         $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
00070     }
00071 
00075     public function testConvertMetadataLatest() {
00076         $metadata = array(
00077             'foo' => array( 'First', 'Second', '_type' => 'ol' ),
00078             'MEDIAWIKI_EXIF_VERSION' => 2
00079         );
00080         $res = $this->handler->convertMetadataVersion( $metadata, 2 );
00081         $this->assertEquals( $metadata, $res );
00082     }
00083 
00087     public function testConvertMetadataToOld() {
00088         $metadata = array(
00089             'foo' => array( 'First', 'Second', '_type' => 'ol' ),
00090             'bar' => array( 'First', 'Second', '_type' => 'ul' ),
00091             'baz' => array( 'First', 'Second' ),
00092             'fred' => 'Single',
00093             'MEDIAWIKI_EXIF_VERSION' => 2,
00094         );
00095         $expected = array(
00096             'foo' => "\n#First\n#Second",
00097             'bar' => "\n*First\n*Second",
00098             'baz' => "\n*First\n*Second",
00099             'fred' => 'Single',
00100             'MEDIAWIKI_EXIF_VERSION' => 1,
00101         );
00102         $res = $this->handler->convertMetadataVersion( $metadata, 1 );
00103         $this->assertEquals( $expected, $res );
00104     }
00105 
00109     public function testConvertMetadataSoftware() {
00110         $metadata = array(
00111             'Software' => array( array( 'GIMP', '1.1' ) ),
00112             'MEDIAWIKI_EXIF_VERSION' => 2,
00113         );
00114         $expected = array(
00115             'Software' => 'GIMP (Version 1.1)',
00116             'MEDIAWIKI_EXIF_VERSION' => 1,
00117         );
00118         $res = $this->handler->convertMetadataVersion( $metadata, 1 );
00119         $this->assertEquals( $expected, $res );
00120     }
00121 
00125     public function testConvertMetadataSoftwareNormal() {
00126         $metadata = array(
00127             'Software' => array( "GIMP 1.2", "vim" ),
00128             'MEDIAWIKI_EXIF_VERSION' => 2,
00129         );
00130         $expected = array(
00131             'Software' => "\n*GIMP 1.2\n*vim",
00132             'MEDIAWIKI_EXIF_VERSION' => 1,
00133         );
00134         $res = $this->handler->convertMetadataVersion( $metadata, 1 );
00135         $this->assertEquals( $expected, $res );
00136     }
00137 }