Index: src/wp-includes/class-wp-image-editor-gd.php
===================================================================
--- src/wp-includes/class-wp-image-editor-gd.php	(revision 27175)
+++ src/wp-includes/class-wp-image-editor-gd.php	(working copy)
@@ -140,11 +140,15 @@
 	 * Resizes current image.
 	 * Wraps _resize, since _resize returns a GD Resource.
 	 *
+	 * At minimum, either a height or width must be provided.
+	 * If one of the two is set to null, the resize will
+	 * maintain aspect ratio according to the provided dimension.
+	 *
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param int $max_w
-	 * @param int $max_h
+	 * @param int|null $max_w Image Width
+	 * @param int|null $max_h Image Height
 	 * @param boolean $crop
 	 * @return boolean|WP_Error
 	 */
@@ -192,13 +196,17 @@
 	 * @param array $sizes {
 	 *     An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
 	 *
+	 *     Either a height or width must be provided.
+	 *     If one of the two is set to null, the resize will
+	 *     maintain aspect ratio according to the provided dimension.
+	 *
 	 *     @type array $size {
-	 *         @type int  $width  Image width.
-	 *         @type int  $height Image height.
-	 *         @type bool $crop   Optional. Whether to crop the image. Default false.
+	 *         @type int  ['width']  Optional. Image width.
+	 *         @type int  ['height'] Optional. Image height.
+	 *         @type bool ['crop']   Optional. Whether to crop the image. Default false.
 	 *     }
 	 * }
-	 * @return array An array of resized images metadata by size.
+	 * @return array An array of resized images' metadata by size.
 	 */
 	public function multi_resize( $sizes ) {
 		$metadata = array();
@@ -205,11 +213,20 @@
 		$orig_size = $this->size;
 
 		foreach ( $sizes as $size => $size_data ) {
-			if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
+			if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) {
 				continue;
+			}
 
-			if ( ! isset( $size_data['crop'] ) )
+			if ( ! isset( $size_data['width'] ) ) {
+				$size_data['width'] = null;
+			}
+			if ( ! isset( $size_data['height'] ) ) {
+				$size_data['height'] = null;
+			}
+
+			if ( ! isset( $size_data['crop'] ) ) {
 				$size_data['crop'] = false;
+			}
 
 			$image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
 
Index: src/wp-includes/class-wp-image-editor-imagick.php
===================================================================
--- src/wp-includes/class-wp-image-editor-imagick.php	(revision 27175)
+++ src/wp-includes/class-wp-image-editor-imagick.php	(working copy)
@@ -211,11 +211,15 @@
 	/**
 	 * Resizes current image.
 	 *
+	 * At minimum, either a height or width must be provided.
+	 * If one of the two is set to null, the resize will
+	 * maintain aspect ratio according to the provided dimension.
+	 *
 	 * @since 3.5.0
 	 * @access public
 	 *
-	 * @param int $max_w
-	 * @param int $max_h
+	 * @param int|null $max_w Image Width
+	 * @param int|null $max_h Image Height
 	 * @param boolean $crop
 	 * @return boolean|WP_Error
 	 */
@@ -255,13 +259,17 @@
 	 * @param array $sizes {
 	 *     An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
 	 *
+	 *     Either a height or width must be provided.
+	 *     If one of the two is set to null, the resize will
+	 *     maintain aspect ratio according to the provided dimension.
+	 *
 	 *     @type array $size {
-	 *         @type int  $width  Image width.
-	 *         @type int  $height Image height.
+	 *         @type int  ['width']  Optional. Image width.
+	 *         @type int  ['height'] Optional. Image height.
 	 *         @type bool $crop   Optional. Whether to crop the image. Default false.
 	 *     }
 	 * }
-	 * @return array An array of resized images metadata by size.
+	 * @return array An array of resized images' metadata by size.
 	 */
 	public function multi_resize( $sizes ) {
 		$metadata = array();
@@ -272,11 +280,20 @@
 			if ( ! $this->image )
 				$this->image = $orig_image->getImage();
 
-			if ( ! ( isset( $size_data['width'] ) && isset( $size_data['height'] ) ) )
+			if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) {
 				continue;
+			}
 
-			if ( ! isset( $size_data['crop'] ) )
+			if ( ! isset( $size_data['width'] ) ) {
+				$size_data['width'] = null;
+			}
+			if ( ! isset( $size_data['height'] ) ) {
+				$size_data['height'] = null;
+			}
+
+			if ( ! isset( $size_data['crop'] ) ) {
 				$size_data['crop'] = false;
+			}
 
 			$resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] );
 
Index: tests/phpunit/data/images/gd_waffles.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: tests/phpunit/data/images/gd_waffles.jpg
===================================================================
--- tests/phpunit/data/images/gd_waffles.jpg	(revision 0)
+++ tests/phpunit/data/images/gd_waffles.jpg	(working copy)

Property changes on: tests/phpunit/data/images/gd_waffles.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tests/phpunit/data/images/imagick_waffles.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: tests/phpunit/data/images/imagick_waffles.jpg
===================================================================
--- tests/phpunit/data/images/imagick_waffles.jpg	(revision 0)
+++ tests/phpunit/data/images/imagick_waffles.jpg	(working copy)

Property changes on: tests/phpunit/data/images/imagick_waffles.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: tests/phpunit/tests/image/editor_gd.php
===================================================================
--- tests/phpunit/tests/image/editor_gd.php	(revision 27175)
+++ tests/phpunit/tests/image/editor_gd.php	(working copy)
@@ -17,8 +17,30 @@
 	}
 
 	/**
+	 * Helper function to check actual image dimensions on disk
+	 *
+	 * @access private
+	 *
+	 * @param string Image Filename
+	 * @param int Width to Check
+	 * @param int Height to Check
+	 */
+	private function check_image_dimensions( $filename, $width, $height ) {
+		# Now, verify real dimensions are as expected
+		$image = new WP_Image_Editor_GD( $filename );
+		$image->load();
+
+		$this->assertEquals(
+			array(
+				'width'  => $width,
+				'height' => $height,
+			),
+			$image->get_size()
+		);
+	}
+
+	/**
 	 * Check support for GD compatible mime types.
-	 * 
 	 */
 	public function test_supports_mime_type() {
 		$gd_image_editor = new WP_Image_Editor_GD( null );
@@ -30,26 +52,409 @@
 
 	/**
 	 * Test resizing an image, not using crop
-	 * 
 	 */
 	public function test_resize() {
+		$file = DIR_TESTDATA . '/images/gd_waffles.jpg';
 
-		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
-
 		$gd_image_editor = new WP_Image_Editor_GD( $file );
 		$gd_image_editor->load();
 
 		$gd_image_editor->resize( 100, 50 );
 
-		$this->assertEquals( array( 'width' => 50, 'height' => 50 ), $gd_image_editor->get_size() );
+		$this->assertEquals(
+			array(
+				'width'  => 75,
+				'height' => 50,
+			),
+			$gd_image_editor->get_size()
+		);
 	}
 
 	/**
-	 * Test resizing an image including cropping
-	 * 
+	 * Test multi_resize with single image resize and no crop
 	 */
+	public function test_single_multi_resize() {
+		$file = DIR_TESTDATA . '/images/gd_waffles.jpg';
+
+		$gd_image_editor = new WP_Image_Editor_GD( $file );
+		$gd_image_editor->load();
+
+		$sizes_array =	array(
+			array(
+				'width'  => 50,
+				'height' => 50,
+			),
+		);
+
+		$resized = $gd_image_editor->multi_resize( $sizes_array );
+
+		# First, check to see if returned array is as expected
+		$expected_array = array(
+			array(
+				'file'      => 'gd_waffles-50x33.jpg',
+				'width'     => 50,
+				'height'    => 33,
+				'mime-type' => 'image/jpeg',
+			),
+		);
+
+		// Now, verify real dimensions are as expected
+		$image_path = DIR_TESTDATA . '/images/'. $resized[0]['file'];
+		$this->check_image_dimensions(
+			$image_path,
+			$expected_array[0]['width'],
+			$expected_array[0]['height']
+		);
+
+		unlink( $image_path );
+	}
+	/**
+	* Test multi_resize doesn't create an image as both H and W are null or 0
+	 */
+	public function test_multi_resize_does_not_create() {
+		$file = DIR_TESTDATA . '/images/gd_waffles.jpg';
+
+		$gd_image_editor = new WP_Image_Editor_GD( $file );
+		$gd_image_editor->load();
+
+		$sizes_array = array(
+			/**
+			 * #1 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+			),
+			/**
+			 * #2 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+				'crop'   => true,
+			),
+			/**
+			 * #3 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value
+				'height' => null, # null Value
+			),
+			/**
+			 * #4 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value
+				'height' => null, # null Value
+				'crop'   => true,
+			),
+			/**
+			 * #5 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value
+				'height' => '', # missing Value
+			),
+			/**
+			 * #6 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value
+				'height' => '', # missing Value
+				'crop'   => true,
+			),
+			/**
+			 * #7 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value and missing height Value
+			),
+			/**
+			 * #8 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value and missing height Value
+				'crop'   => true,
+			),
+			/**
+			 * #9 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value and missing height Value
+			),
+			/**
+			 * #10 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value and missing height Value
+				'crop'   => true,
+			),
+
+			/**
+			 * 11 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value and missing height Value
+			),
+			/**
+			 * #12 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value and missing height Value
+				'crop'   => true,
+			),
+		);
+
+		// run function
+		$resized = $gd_image_editor->multi_resize( $sizes_array );	
+
+		// reurn an empty array
+		$this->assertEmpty($resized);
+
+	}
+
+	/**
+	 * Test multi_resize with multiple sizes
+	 *
+	 * @Xticket 26823XX
+	 */
+	public function test_multi_resize() {
+		$file = DIR_TESTDATA . '/images/gd_waffles.jpg';
+
+		$gd_image_editor = new WP_Image_Editor_GD( $file );
+		$gd_image_editor->load();
+
+		$sizes_array = array(
+
+			/**
+			 * #0 - 10x10 resize, no cropping.
+			 * By aspect, should be 10x6 output.
+			 */
+			array(
+				'width'  => 10,
+				'height' => 10,
+				'crop'   => false,
+			),
+
+			/**
+			 * #1 - 75x50 resize, with cropping.
+			 * Output dimensions should be 75x50
+			 */
+			array(
+				'width'  => 75,
+				'height' => 50,
+				'crop'   => true,
+			),
+
+			/**
+			 * #2 - 20 pixel max height, no cropping.
+			 * By aspect, should be 30x20 output.
+			 */
+			array(
+				'width'  => 9999, # Arbitrary High Value
+				'height' => 20,
+				'crop'   => false,
+			),
+
+			/**
+			 * #3 - 45 pixel max height, with cropping.
+			 * By aspect, should be 45x400 output.
+			 */
+			array(
+				'width'  => 45,
+				'height' => 9999, # Arbitrary High Value
+				'crop'   => true,
+			),
+
+			/**
+			 * #4 - 50 pixel max width, no cropping.
+			 * By aspect, should be 50x33 output.
+			 */
+			array(
+				'width' => 50,
+			),
+
+			/**
+			 * #5 - 55 pixel max width, no cropping, null height
+			 * By aspect, should be 55x36 output.
+			 */
+			array(
+				'width'  => 55,
+				'height' => null,
+			),
+
+			/**
+			 * #6 - 55 pixel max height, no cropping, no width specified.
+			 * By aspect, should be 82x55 output.
+			 */
+			array(
+				'height' => 55,
+			),
+
+			/**
+			 * #7 - 60 pixel max height, no cropping, null width.
+			 * By aspect, should be 90x60 output.
+			 */
+			array(
+				'width'  => null,
+				'height' => 60,
+			),
+
+			/**
+			 * #8 - 70 pixel max height, no cropping, negative width.
+			 * By aspect, should be 105x70 output.
+			 */
+			array(
+				'width'  => -9999, # Arbitrary Negative Value
+				'height' => 70,
+			),
+
+			/**
+			 * #9 - 200 pixel max width, no cropping, negative height.
+			 * By aspect, should be 200x133 output.
+			 */
+			array(
+				'width'  => 200,
+				'height' => -9999, # Arbitrary Negative Value
+			),
+			/**
+			 * #10 - 55 pixel max width, no cropping, '' height
+			 * By aspect, should be 65x36 output.
+			 */
+			array(
+				'width'  => 65,
+				'height' => '',
+			),
+
+		);
+
+		$resized = $gd_image_editor->multi_resize( $sizes_array );
+var_dump($resized);
+		$expected_array = array(
+
+			// #0
+			array(
+				'file'      => 'gd_waffles-10x6.jpg',
+				'width'     => 10,
+				'height'    => 6,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #1
+			array(
+				'file'      => 'gd_waffles-75x50.jpg',
+				'width'     => 75,
+				'height'    => 50,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #2
+			array(
+				'file'      => 'gd_waffles-30x20.jpg',
+				'width'     => 30,
+				'height'    => 20,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #3
+			array(
+				'file'      => 'gd_waffles-45x400.jpg',
+				'width'     => 45,
+				'height'    => 400,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #4
+			array(
+				'file'      => 'gd_waffles-50x33.jpg',
+				'width'     => 50,
+				'height'    => 33,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #5
+			array(
+				'file'      => 'gd_waffles-55x36.jpg',
+				'width'     => 55,
+				'height'    => 36,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #6
+			array(
+				'file'      => 'gd_waffles-82x55.jpg',
+				'width'     => 82,
+				'height'    => 55,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #7
+			array(
+				'file'      => 'gd_waffles-90x60.jpg',
+				'width'     => 90,
+				'height'    => 60,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #8
+			array(
+				'file'      => 'gd_waffles-105x70.jpg',
+				'width'     => 105,
+				'height'    => 70,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #9
+			array(
+				'file'      => 'gd_waffles-200x133.jpg',
+				'width'     => 200,
+				'height'    => 133,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #10
+			array(
+				'file'      => 'gd_waffles-65x43.jpg',
+				'width'     => 65,
+				'height'    => 43,
+				'mime-type' => 'image/jpeg',
+			),
+		);
+
+		$this->assertNotNull( $resized );
+		$this->assertEquals( $expected_array, $resized );
+
+		foreach( $resized as $key => $image_data ){
+			$image_path = DIR_TESTDATA . '/images/' . $image_data['file'];
+
+			// Now, verify real dimensions are as expected
+			$this->check_image_dimensions(
+				$image_path,
+				$expected_array[$key]['width'],
+				$expected_array[$key]['height']
+			);
+
+			// Remove temporary file
+			unlink( $image_path );
+		}
+	}
+
+	/**
+	 * Test resizing an image with cropping
+	 */
 	public function test_resize_and_crop() {
-
 		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
 
 		$gd_image_editor = new WP_Image_Editor_GD( $file );
@@ -57,7 +462,13 @@
 
 		$gd_image_editor->resize( 100, 50, true );
 
-		$this->assertEquals( array( 'width' => 100, 'height' => 50 ), $gd_image_editor->get_size() );
+		$this->assertEquals(
+			array(
+				'width'  => 100,
+				'height' => 50,
+			),
+			$gd_image_editor->get_size()
+		);
 	}
 
 	/**
@@ -64,7 +475,6 @@
 	 * Test cropping an image
 	 */
 	public function test_crop() {
-
 		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
 
 		$gd_image_editor = new WP_Image_Editor_GD( $file );
@@ -72,7 +482,13 @@
 
 		$gd_image_editor->crop( 0, 0, 50, 50 );
 
-		$this->assertEquals( array( 'width' => 50, 'height' => 50 ), $gd_image_editor->get_size() );
+		$this->assertEquals(
+			array(
+				'width' => 50,
+				'height' => 50,
+			),
+			$gd_image_editor->get_size()
+		);
 
 	}
 
@@ -80,7 +496,6 @@
 	 * Test rotating an image 180 deg
 	 */
 	public function test_rotate() {
-
 		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
 
 		$gd_image_editor = new WP_Image_Editor_GD( $file );
@@ -100,7 +515,6 @@
 	 * Test flipping an image
 	 */
 	public function test_flip() {
-
 		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
 
 		$gd_image_editor = new WP_Image_Editor_GD( $file );
@@ -122,7 +536,6 @@
 	 * @ticket 23039
 	 */
 	public function test_image_preserves_alpha_on_resize() {
-
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
@@ -142,7 +555,6 @@
 	 * @ticket 23039
 	 */
 	public function test_image_preserves_alpha() {
-
 		$file = DIR_TESTDATA . '/images/transparent.png';
 
 		$editor = wp_get_image_editor( $file );
Index: tests/phpunit/tests/image/editor_imagick.php
===================================================================
--- tests/phpunit/tests/image/editor_imagick.php	(revision 27175)
+++ tests/phpunit/tests/image/editor_imagick.php	(working copy)
@@ -24,8 +24,29 @@
 	}
 
 	/**
+	 * Helper function to check actual image dimensions on disk
+	 *
+	 * @access private
+	 *
+	 * @param string Image Filename
+	 * @param int Width to Check
+	 * @param int Height to Check
+	 */
+	private function check_image_dimensions( $filename, $width, $height ) {
+		$imagick_image_editor = new WP_Image_Editor_Imagick( $filename );
+		$imagick_image_editor->load();
+
+		$this->assertEquals(
+			array(
+				'width'  => $width,
+				'height' => $height,
+			),
+			$imagick_image_editor->get_size()
+		);
+	}
+
+	/**
 	 * Check support for Image Magick compatible mime types.
-	 * 
 	 */
 	public function test_supports_mime_type() {
 
@@ -38,34 +59,407 @@
 
 	/**
 	 * Test resizing an image, not using crop
-	 * 
 	 */
 	public function test_resize() {
+		$file = DIR_TESTDATA . '/images/imagick_waffles.jpg';
 
-		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
-
 		$imagick_image_editor = new WP_Image_Editor_Imagick( $file );
 		$imagick_image_editor->load();
 
 		$imagick_image_editor->resize( 100, 50 );
 
-		$this->assertEquals( array( 'width' => 50, 'height' => 50 ), $imagick_image_editor->get_size() );
+		$this->assertEquals(
+			array(
+				'width'  => 75,
+				'height' => 50,
+			),
+			$imagick_image_editor->get_size()
+		);
 	}
 
 	/**
-	 * Test resizing an image including cropping
-	 * 
+	 * Test multi_resize with single image resize and no crop
 	 */
-	public function test_resize_and_crop() {
+	public function test_single_multi_resize() {
+		$file = DIR_TESTDATA . '/images/imagick_waffles.jpg';
 
-		$file = DIR_TESTDATA . '/images/gradient-square.jpg';
+		$test_image = new WP_Image_Editor_Imagick( $file );
+		$test_image->load();
 
+		$sizes_array =	array(
+			array(
+				'width'  => 50,
+				'height' => 50,
+			),
+		);
+
+		$resized = $test_image->multi_resize( $sizes_array );
+
+		# First, check to see if returned array is as expected
+		$expected_array = array(
+			array(
+				'file'      => 'imagick_waffles-50x33.jpg',
+				'width'     => 50,
+				'height'    => 33,
+				'mime-type' => 'image/jpeg',
+			),
+		);
+
+		$this->assertEquals( $expected_array, $resized );
+
+		// Now, verify real dimensions are as expected
+		$image_path = DIR_TESTDATA . '/images/'. $resized[0]['file'];
+		$this->check_image_dimensions(
+			$image_path,
+			$expected_array[0]['width'],
+			$expected_array[0]['height']
+		);
+
+		unlink( $image_path );
+	}
+
+	/**
+	* Test multi_resize doesn't create an image as both H and W are null or 0
+	 */
+	public function test_multi_resize_does_not_create() {
+		$file = DIR_TESTDATA . '/images/imagick_waffles.jpg';
+
+		$gd_image_editor = new WP_Image_Editor_Imagick( $file );
+		$gd_image_editor->load();
+
+		$sizes_array = array(
+			/**
+			 * #1 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+			),
+			/**
+			 * #2 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+				'crop'   => true,
+			),
+			/**
+			 * #3 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+			),
+			/**
+			 * #4 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value
+				'height' => 0, # Zero Value
+				'crop'   => true,
+			),
+			/**
+			 * #5 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value
+				'height' => '', # missing Value
+			),
+			/**
+			 * #6 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value
+				'height' => '', # missing Value
+				'crop'   => true,
+			),
+			/**
+			 * #7 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value and missing height Value
+			),
+			/**
+			 * #8 - 
+			 *  no output
+			 */
+			array(
+				'width'  => 0, # Zero Value and missing height Value
+				'crop'   => true,
+			),
+			/**
+			 * #9 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value and missing height Value
+			),
+			/**
+			 * #10 - 
+			 *  no output
+			 */
+			array(
+				'width'  => null, # null Value and missing height Value
+				'crop'   => true,
+			),
+
+			/**
+			 * 11 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value and missing height Value
+			),
+			/**
+			 * #12 - 
+			 *  no output
+			 */
+			array(
+				'width'  => '', # missing Value and missing height Value
+				'crop'   => true,
+			),			
+		);
+
+
+		// run function
+		$resized = $gd_image_editor->multi_resize( $sizes_array );	
+
+		// reurn an empty array
+		$this->assertEmpty($resized);
+
+	}
+
+	/**
+	 * Test multi_resize with multiple sizes
+	 *
+	 * @Xticket 26823XX
+	 */
+	public function test_multi_resize() {
+		$file = DIR_TESTDATA . '/images/imagick_waffles.jpg';
+
 		$imagick_image_editor = new WP_Image_Editor_Imagick( $file );
 		$imagick_image_editor->load();
 
-		$imagick_image_editor->resize( 100, 50, true );
+		$sizes_array = array(
 
-		$this->assertEquals( array( 'width' => 100, 'height' => 50 ), $imagick_image_editor->get_size() );
+			/**
+			 * #0 - 10x10 resize, no cropping.
+			 * By aspect, should be 10x6 output.
+			 */
+			array(
+				'width'  => 10,
+				'height' => 10,
+				'crop'   => false,
+			),
+
+			/**
+			 * #1 - 75x50 resize, with cropping.
+			 * Output dimensions should be 75x50
+			 */
+			array(
+				'width'  => 75,
+				'height' => 50,
+				'crop'   => true,
+			),
+
+			/**
+			 * #2 - 20 pixel max height, no cropping.
+			 * By aspect, should be 30x20 output.
+			 */
+			array(
+				'width'  => 9999, # Arbitrary High Value
+				'height' => 20,
+				'crop'   => false,
+			),
+
+			/**
+			 * #3 - 45 pixel max height, with cropping.
+			 * By aspect, should be 45x400 output.
+			 */
+			array(
+				'width'  => 45,
+				'height' => 9999, # Arbitrary High Value
+				'crop'   => true,
+			),
+
+			/**
+			 * #4 - 50 pixel max width, no cropping.
+			 * By aspect, should be 50x33 output.
+			 */
+			array(
+				'width' => 50,
+			),
+
+			/**
+			 * #5 - 55 pixel max width, no cropping, null height
+			 * By aspect, should be 55x36 output.
+			 */
+			array(
+				'width'  => 55,
+				'height' => null,
+			),
+
+			/**
+			 * #6 - 55 pixel max height, no cropping, no width specified.
+			 * By aspect, should be 82x55 output.
+			 */
+			array(
+				'height' => 55,
+			),
+
+			/**
+			 * #7 - 60 pixel max height, no cropping, null width.
+			 * By aspect, should be 90x60 output.
+			 */
+			array(
+				'width'  => null,
+				'height' => 60,
+			),
+
+			/**
+			 * #8 - 70 pixel max height, no cropping, negative width.
+			 * By aspect, should be 105x70 output.
+			 */
+			array(
+				'width'  => -9999, # Arbitrary Negative Value
+				'height' => 70,
+			),
+
+			/**
+			 * #9 - 200 pixel max width, no cropping, negative height.
+			 * By aspect, should be 200x133 output.
+			 */
+			array(
+				'width'  => 200,
+				'height' => -9999, # Arbitrary Negative Value
+			),
+
+			/**
+			 * #10 - 55 pixel max width, no cropping, '' height
+			 * By aspect, should be 65x36 output.
+			 */
+			array(
+				'width'  => 65,
+				'height' => '',
+			),
+		);
+
+		$resized = $imagick_image_editor->multi_resize( $sizes_array );
+
+		$expected_array = array(
+
+			// #0
+			array(
+				'file'      => 'imagick_waffles-10x6.jpg',
+				'width'     => 10,
+				'height'    => 6,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #1
+			array(
+				'file'      => 'imagick_waffles-75x50.jpg',
+				'width'     => 75,
+				'height'    => 50,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #2
+			array(
+				'file'      => 'imagick_waffles-30x20.jpg',
+				'width'     => 30,
+				'height'    => 20,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #3
+			array(
+				'file'      => 'imagick_waffles-45x400.jpg',
+				'width'     => 45,
+				'height'    => 400,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #4
+			array(
+				'file'      => 'imagick_waffles-50x33.jpg',
+				'width'     => 50,
+				'height'    => 33,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #5
+			array(
+				'file'      => 'imagick_waffles-55x36.jpg',
+				'width'     => 55,
+				'height'    => 36,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #6
+			array(
+				'file'      => 'imagick_waffles-82x55.jpg',
+				'width'     => 82,
+				'height'    => 55,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #7
+			array(
+				'file'      => 'imagick_waffles-90x60.jpg',
+				'width'     => 90,
+				'height'    => 60,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #8
+			array(
+				'file'      => 'imagick_waffles-105x70.jpg',
+				'width'     => 105,
+				'height'    => 70,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #9
+			array(
+				'file'      => 'imagick_waffles-200x133.jpg',
+				'width'     => 200,
+				'height'    => 133,
+				'mime-type' => 'image/jpeg',
+			),
+
+			// #10
+			array(
+				'file'      => 'imagick_waffles-65x43.jpg',
+				'width'     => 65,
+				'height'    => 43,
+				'mime-type' => 'image/jpeg',
+			),
+		);
+
+		$this->assertNotNull( $resized );
+		$this->assertEquals( $expected_array, $resized );
+
+		foreach( $resized as $key => $image_data ){
+			$image_path = DIR_TESTDATA . '/images/' . $image_data['file'];
+
+			// Now, verify real dimensions are as expected
+			$this->check_image_dimensions(
+				$image_path,
+				$expected_array[$key]['width'],
+				$expected_array[$key]['height']
+			);
+
+			// Remove temporary file
+			unlink( $image_path );
+		}
 	}
 
 	/**
