Merge "mediawiki.api: Remove console warning for legacy token type"
[mediawiki.git] / tests / phpunit / includes / GlobalFunctions / WfThumbIsStandardTest.php
blobb389409c6b1d4de71ded252d1126c9e52e37bf8e
1 <?php
3 use MediaWiki\MainConfigNames;
4 use Psr\Log\NullLogger;
6 /**
7 * @group GlobalFunctions
8 * @covers ::wfThumbIsStandard
9 */
10 class WfThumbIsStandardTest extends MediaWikiIntegrationTestCase {
12 protected function setUp(): void {
13 parent::setUp();
15 $this->overrideConfigValues( [
16 MainConfigNames::ThumbLimits => [
17 100,
18 401
20 MainConfigNames::ImageLimits => [
21 [ 300, 225 ],
22 [ 800, 600 ],
24 ] );
27 public static function provideThumbParams() {
28 return [
29 // Thumb limits
31 'Standard thumb width',
32 true,
33 [ 'width' => 100 ],
36 'Standard thumb width',
37 true,
38 [ 'width' => 401 ],
40 // wfThumbIsStandard should match Linker::processResponsiveImages
41 // in its rounding behaviour.
43 'Standard thumb width (HiDPI 1.5x) - incorrect rounding',
44 false,
45 [ 'width' => 601 ],
48 'Standard thumb width (HiDPI 1.5x)',
49 true,
50 [ 'width' => 602 ],
53 'Standard thumb width (HiDPI 2x)',
54 true,
55 [ 'width' => 802 ],
58 'Non-standard thumb width',
59 false,
60 [ 'width' => 300 ],
62 // Image limits
63 // Note: Image limits are measured as pairs. Individual values
64 // may be non-standard based on the aspect ratio.
66 'Standard image width/height pair',
67 true,
68 [ 'width' => 250, 'height' => 225 ],
71 'Standard image width/height pair',
72 true,
73 [ 'width' => 667, 'height' => 600 ],
76 'Standard image width where image does not fit aspect ratio',
77 false,
78 [ 'width' => 300 ],
81 'Implicit width from image width/height pair aspect ratio fit',
82 true,
83 // 2000x1800 fit inside 300x225 makes w=250
84 [ 'width' => 250 ],
87 'Height-only is always non-standard',
88 false,
89 [ 'height' => 225 ],
94 /**
95 * @dataProvider provideThumbParams
97 public function testIsStandard( $message, $expected, $params ) {
98 $handlers = $this->getConfVar( MainConfigNames::ParserTestMediaHandlers );
99 $this->setService(
100 'MediaHandlerFactory',
101 new MediaHandlerFactory( new NullLogger(), $handlers )
103 $this->assertSame(
104 $expected,
105 wfThumbIsStandard( new FakeDimensionFile( [ 2000, 1800 ], 'image/jpeg' ), $params ),
106 $message