1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
<?php
/**
* @group Media
*/
class MediaHandlerTest extends \MediaWikiUnitTestCase {
/**
* @covers \MediaHandler::fitBoxWidth
*
* @dataProvider provideTestFitBoxWidth
*/
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 ]
),
static::generateTestFitBoxWidthData( 366, 300, [
50 => 61,
17 => 21,
18 => 22 ]
),
static::generateTestFitBoxWidthData( 300, 366, [
50 => 41,
17 => 14,
18 => 15 ]
),
static::generateTestFitBoxWidthData( 100, 400, [
50 => 12,
17 => 4,
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 int $width
* @param int $height
* @param array $tests 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;
}
}
|