summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/media/MediaHandlerTest.php
blob: 7a052f603552cfca0833acff1fa30dc2e7f1088e (plain)
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 MediaWikiTestCase {

	/**
	 * @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;
	}
}