Changeset 1061 in tests
- Timestamp:
- 10/01/2012 09:08:41 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/image/functions.php
r909 r1061 7 7 */ 8 8 class Tests_Image_Functions extends WP_UnitTestCase { 9 10 /** 11 * Get the MIME type of a file 12 * @param string $filename 13 * @return string 14 */ 15 protected function get_mime_type( $filename ) { 16 $mime_type = ''; 17 if ( extension_loaded( 'fileinfo' ) ) { 18 $finfo = new finfo(); 19 $mime_type = $finfo->file( $filename, FILEINFO_MIME ); 20 } elseif ( function_exists('mime_content_type') ) { 21 $mime_type = mime_content_type( $filename ); 22 } 23 if ( false !== strpos( $mime_type, ';' ) ) { 24 list( $mime_type, $charset ) = explode( ';', $mime_type, 2 ); 25 } 26 return $mime_type; 27 } 28 9 29 function test_is_image_positive() { 10 30 // these are all image files recognized by php … … 73 93 $this->assertFalse( file_is_displayable_image( DIR_TESTDATA.'/images/'.$file ), "file_is_valid_image($file) should return false" ); 74 94 } 75 } 76 95 } 96 97 /** 98 * Test save image file and mime_types 99 * @ticket 6821 100 */ 101 public function test_wp_save_image_file() { 102 include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); 103 104 // Mime types 105 $mime_types = array( 106 'image/jpeg', 107 'image/gif', 108 'image/png' 109 ); 110 111 // Test each image editor engine 112 $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); 113 foreach ( $classes as $class ) { 114 115 // If the image editor isn't available, skip it 116 if ( !$class::test() ) { 117 continue; 118 } 119 $filter = create_function( '', "return '$class';" ); 120 add_filter( 'image_editor_class', $filter ); 121 122 // Call wp_save_image_file 123 $img = WP_Image_Editor::get_instance( DIR_TESTDATA . '/images/canola.jpg' ); 124 125 // Save a file as each mime type, assert it works 126 foreach ( $mime_types as $mime_type ) { 127 $file = wp_tempnam(); 128 $ret = wp_save_image_file( $file, $img, $mime_type, 1 ); 129 $this->assertNotEmpty( $ret ); 130 $this->assertNotInstanceOf( 'WP_Error', $ret ); 131 $this->assertEquals( $mime_type, $this->get_mime_type( $ret['path'] ) ); 132 133 // Clean up 134 @unlink( $file ); 135 @unlink( $ret['path'] ); 136 } 137 138 // Clean up 139 unset( $img ); 140 } 141 } 142 143 /** 144 * Test that a passed mime type overrides the extension in the filename 145 * @ticket 6821 146 */ 147 public function test_mime_overrides_filename() { 148 149 // Test each image editor engine 150 $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); 151 foreach ( $classes as $class ) { 152 153 // If the image editor isn't available, skip it 154 if ( !$class::test() ) { 155 continue; 156 } 157 $filter = create_function( '', "return '$class';" ); 158 add_filter( 'image_editor_class', $filter ); 159 160 // Save the file 161 $img = WP_Image_Editor::get_instance( DIR_TESTDATA . '/images/canola.jpg' ); 162 $mime_type = 'image/gif'; 163 $file = wp_tempnam( 'tmp.jpg' ); 164 $ret = $img->save( $file, $mime_type ); 165 166 // Make assertions 167 $this->assertNotEmpty( $ret ); 168 $this->assertNotInstanceOf( 'WP_Error', $ret ); 169 $this->assertEquals( $mime_type, $this->get_mime_type( $ret['path'] ) ); 170 171 // Clean up 172 @unlink( $file ); 173 @unlink( $ret['path'] ); 174 unset( $img ); 175 } 176 } 177 178 /** 179 * Test that mime types are correctly inferred from file extensions 180 * @ticket 6821 181 */ 182 public function test_inferred_mime_types() { 183 184 // Mime types 185 $mime_types = array( 186 'jpg' => 'image/jpeg', 187 'jpeg' => 'image/jpeg', 188 'jpe' => 'image/jpeg', 189 'gif' => 'image/gif', 190 'png' => 'image/png', 191 'unk' => 'image/jpeg' // Default, unknown 192 ); 193 194 // Test each image editor engine 195 $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); 196 foreach ( $classes as $class ) { 197 198 // If the image editor isn't available, skip it 199 if ( !$class::test() ) { 200 continue; 201 } 202 $filter = create_function( '', "return '$class';" ); 203 add_filter( 'image_editor_class', $filter ); 204 205 // Save the image as each file extension, check the mime type 206 $img = WP_Image_Editor::get_instance( DIR_TESTDATA . '/images/canola.jpg' ); 207 $temp = get_temp_dir(); 208 foreach ( $mime_types as $ext => $mime_type ) { 209 $file = wp_unique_filename( $temp, uniqid() . ".$ext" ); 210 $ret = $img->save( trailingslashit( $temp ) . $file ); 211 $this->assertNotEmpty( $ret ); 212 $this->assertNotInstanceOf( 'WP_Error', $ret ); 213 $this->assertEquals( $mime_type, $this->get_mime_type( $ret['path'] ) ); 214 @unlink( $file ); 215 @unlink( $ret['path'] ); 216 } 217 218 // Clean up 219 unset( $img ); 220 } 221 } 77 222 } -
trunk/tests/image/resize.php
r909 r1061 124 124 } 125 125 126 /** 127 * Try resizing a non-existent image 128 * @ticket 6821 129 */ 130 public function test_resize_non_existent_image() { 131 $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); 132 foreach ( $classes as $class ) { 133 if ( !$class::test() ) { 134 continue; 135 } 136 $filter = create_function( '', "return $class;" ); 137 add_filter( 'image_editor_class', $filter ); 138 $image = image_resize( DIR_TESTDATA.'/images/test-non-existent-image.jpg', 25, 25 ); 139 $this->assertInstanceOf( 'WP_Error', $image ); 140 $this->assertEquals( 'error_loading_image', $image->get_error_code() ); 141 } 142 } 143 144 /** 145 * Try resizing a php file (bad image) 146 * @ticket 6821 147 */ 148 public function test_resize_bad_image() { 149 $classes = array('WP_Image_Editor_GD', 'WP_Image_Editor_Imagick'); 150 foreach ( $classes as $class ) { 151 if ( !$class::test() ) { 152 continue; 153 } 154 $filter = create_function( '', "return $class;" ); 155 add_filter( 'image_editor_class', $filter ); 156 $image = image_resize( DIR_TESTDATA.'/export/crazy-cdata.xml', 25, 25 ); 157 $this->assertInstanceOf( 'WP_Error', $image ); 158 $this->assertEquals( 'invalid_image', $image->get_error_code() ); 159 } 160 } 126 161 }
Note: See TracChangeset
for help on using the changeset viewer.