Merge "Add tags support to patrol, protect, unblock, and undelete"
[lhc/web/wiklou.git] / tests / phpunit / includes / media / MediaHandlerTest.php
index d8cfcc4..1eddaff 100644 (file)
@@ -7,50 +7,62 @@ class MediaHandlerTest extends MediaWikiTestCase {
 
        /**
         * @covers MediaHandler::fitBoxWidth
-        * @todo split into a dataprovider and test method
+        *
+        * @dataProvider provideTestFitBoxWidth
         */
-       public function testFitBoxWidth() {
-               $vals = array(
-                       array(
-                               'width' => 50,
-                               'height' => 50,
-                               'tests' => array(
+       public function testFitBoxWidth( $width, $height, $max, $expected ) {
+               $y = round( $expected * $height / $width );
+               $result = MediaHandler::fitBoxWidth( $width, $height, $max );
+               $y2 = round( $result * $height / $width );
+               $this->assertEquals( $expected,
+                       $result,
+                       "($width, $height, $max) wanted: {$expected}x$y, got: {z$result}x$y2" );
+       }
+
+       public static function provideTestFitBoxWidth() {
+               return array_merge(
+                       static::generateTestFitBoxWidthData( 50, 50, [
                                        50 => 50,
                                        17 => 17,
-                                       18 => 18 ) ),
-                       array(
-                               'width' => 366,
-                               'height' => 300,
-                               'tests' => array(
+                                       18 => 18 ]
+                       ),
+                       static::generateTestFitBoxWidthData( 366, 300, [
                                        50 => 61,
                                        17 => 21,
-                                       18 => 22 ) ),
-                       array(
-                               'width' => 300,
-                               'height' => 366,
-                               'tests' => array(
+                                       18 => 22 ]
+                       ),
+                       static::generateTestFitBoxWidthData( 300, 366, [
                                        50 => 41,
                                        17 => 14,
-                                       18 => 15 ) ),
-                       array(
-                               'width' => 100,
-                               'height' => 400,
-                               'tests' => array(
+                                       18 => 15 ]
+                       ),
+                       static::generateTestFitBoxWidthData( 100, 400, [
                                        50 => 12,
                                        17 => 4,
-                                       18 => 4 ) ) );
-               foreach ( $vals as $row ) {
-                       $tests = $row['tests'];
-                       $height = $row['height'];
-                       $width = $row['width'];
-                       foreach ( $tests as $max => $expected ) {
-                               $y = round( $expected * $height / $width );
-                               $result = MediaHandler::fitBoxWidth( $width, $height, $max );
-                               $y2 = round( $result * $height / $width );
-                               $this->assertEquals( $expected,
-                                       $result,
-                                       "($width, $height, $max) wanted: {$expected}x$y, got: {$result}x$y2" );
-                       }
+                                       18 => 4 ]
+                       )
+               );
+       }
+
+       /**
+        * Generate single test cases by combining the dimensions and tests contents
+        *
+        * It creates:
+        * [$width, $height, $max, $expected],
+        * [$width, $height, $max2, $expected2], ...
+        * out of parameters:
+        * $width, $height, { $max => $expected, $max2 => $expected2, ... }
+        *
+        * @param $width int
+        * @param $height int
+        * @param $tests array associative array of $max => $expected values
+        * @return array
+        */
+       private static function generateTestFitBoxWidthData( $width, $height, $tests ) {
+               $result = [];
+               foreach ( $tests as $max => $expected ) {
+                       $result[] = [ $width, $height, $max, $expected ];
                }
+               return $result;
        }
 }