(follow-up r90256) Unit tests.
authorBrian Wolff <bawolff@users.mediawiki.org>
Mon, 11 Jul 2011 16:42:15 +0000 (16:42 +0000)
committerBrian Wolff <bawolff@users.mediawiki.org>
Mon, 11 Jul 2011 16:42:15 +0000 (16:42 +0000)
tests/phpunit/includes/media/ExifBitmapTest.php [new file with mode: 0644]
tests/phpunit/includes/media/JpegTest.php [new file with mode: 0644]
tests/phpunit/includes/media/README
tests/phpunit/includes/media/TiffTest.php [new file with mode: 0644]
tests/phpunit/includes/media/test.jpg [new file with mode: 0644]
tests/phpunit/includes/media/test.tiff [new file with mode: 0644]

diff --git a/tests/phpunit/includes/media/ExifBitmapTest.php b/tests/phpunit/includes/media/ExifBitmapTest.php
new file mode 100644 (file)
index 0000000..f8b3717
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+class ExifBitmapTest extends MediaWikiTestCase {
+
+       public function testIsOldBroken() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $res = $handler->isMetadataValid( null, ExifBitmapHandler::OLD_BROKEN_FILE );
+               $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
+       }
+       public function testIsBrokenFile() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $res = $handler->isMetadataValid( null, ExifBitmapHandler::BROKEN_FILE );
+               $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
+       }
+       public function testIsInvalid() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $res = $handler->isMetadataValid( null, 'Something Invalid Here.' );
+               $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
+       }
+       public function testGoodMetadata() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $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;}';
+               $res = $handler->isMetadataValid( null, $meta );
+               $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
+       }
+       public function testIsOldGood() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $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;}';
+               $res = $handler->isMetadataValid( null, $meta );
+               $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
+       }
+       // Handle metadata from paged tiff handler (gotten via instant commons)
+       // gracefully.
+       public function testPagedTiffHandledGracefully() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $handler = new ExifBitmapHandler;
+               $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";}';
+               $res = $handler->isMetadataValid( null, $meta );
+               $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
+       }
+}
diff --git a/tests/phpunit/includes/media/JpegTest.php b/tests/phpunit/includes/media/JpegTest.php
new file mode 100644 (file)
index 0000000..cc2e556
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+class JpegTest extends MediaWikiTestCase {
+
+       public function testInvalidFile() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $jpeg = new JpegHandler;
+               $res = $jpeg->getMetadata( null, dirname( __FILE__ ) . '/README' );
+               $this->assertEquals( ExifBitmapHandler::BROKEN_FILE, $res );
+       }
+       public function testTiffFile() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $h = new JpegHandler;
+               $res = $h->getMetadata( null, dirname( __FILE__ ) . '/test.jpg' );
+               $expected = 'a:7:{s:16:"ImageDescription";s:9:"Test file";s:11:"XResolution";s:4:"72/1";s:11:"YResolution";s:4:"72/1";s:14:"ResolutionUnit";i:2;s:16:"YCbCrPositioning";i:1;s:15:"JPEGFileComment";a:1:{i:0;s:17:"Created with GIMP";}s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
+               // Hopefully php always serializes things in the same order.
+               $this->assertEquals( $expected, $res );
+       }
+}
index 91e3c4f..7f638c1 100644 (file)
@@ -16,7 +16,8 @@ TastyCakes on English Wikipedia
 
 
 greyscale-na-png.png, rgb-png.png, Xmp-exif-multilingual_test.jpg
-greyscale-png.png, 1bit-png.png, Png-native-test.png, rgb-na-png.png
+greyscale-png.png, 1bit-png.png, Png-native-test.png, rgb-na-png.png,
+test.tiff, test.jpg
 Are all by Bawolff. I don't think they contain enough originality to
 claim copyright, but on the off chance they do, feel free to use them
 however you feel fit, without restriction.
diff --git a/tests/phpunit/includes/media/TiffTest.php b/tests/phpunit/includes/media/TiffTest.php
new file mode 100644 (file)
index 0000000..8081ebf
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+class TiffTest extends MediaWikiTestCase {
+
+       public function testInvalidFile() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $tiff = new TiffHandler;
+               $res = $tiff->getMetadata( null, dirname( __FILE__ ) . '/README' );
+               $this->assertEquals( ExifBitmapHandler::BROKEN_FILE, $res );
+       }
+       public function testTiffFile() {
+               global $wgShowEXIF;
+               if ( !$wgShowEXIF ) {
+                       $this->markTestIncomplete( "This test needs the exif extension." );
+               }
+               $tiff = new TiffHandler;
+               $res = $tiff->getMetadata( null, dirname( __FILE__ ) . '/test.tiff' );
+               $expected = '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;}';
+               // Hopefully php always serializes things in the same order.
+               $this->assertEquals( $expected, $res );
+       }
+}
diff --git a/tests/phpunit/includes/media/test.jpg b/tests/phpunit/includes/media/test.jpg
new file mode 100644 (file)
index 0000000..cb08425
Binary files /dev/null and b/tests/phpunit/includes/media/test.jpg differ
diff --git a/tests/phpunit/includes/media/test.tiff b/tests/phpunit/includes/media/test.tiff
new file mode 100644 (file)
index 0000000..6a36f76
Binary files /dev/null and b/tests/phpunit/includes/media/test.tiff differ