diff --git a/tests/src/Util/ImagesTest.php b/tests/src/Util/ImagesTest.php index 4ea19e778d..e0bf6c9a5d 100644 --- a/tests/src/Util/ImagesTest.php +++ b/tests/src/Util/ImagesTest.php @@ -96,4 +96,104 @@ class ImagesTest extends MockedTest self::assertArraySubset($assertion, Images::getInfoFromURL($url)); } + + public function dataScalingDimensions() + { + return [ + 'landscape' => [ + 'width' => 640, + 'height' => 480, + 'max' => 320, + 'assertion' => [ + 'width' => 320, + 'height' => 240, + ] + ], + 'wide_landscape' => [ + 'width' => 640, + 'height' => 120, + 'max' => 320, + 'assertion' => [ + 'width' => 320, + 'height' => 60, + ] + ], + 'landscape_round_up' => [ + 'width' => 640, + 'height' => 479, + 'max' => 320, + 'assertion' => [ + 'width' => 320, + 'height' => 240, + ] + ], + 'landscape_zero_height' => [ + 'width' => 640, + 'height' => 1, + 'max' => 160, + 'assertion' => [ + 'width' => 160, + 'height' => 1, + ] + ], + 'portrait' => [ + 'width' => 480, + 'height' => 640, + 'max' => 320, + 'assertion' => [ + 'width' => 240, + 'height' => 320, + ] + ], + // For portrait with aspect ratio <= 16:9, constrain height + 'portrait_16_9' => [ + 'width' => 1080, + 'height' => 1920, + 'max' => 320, + 'assertion' => [ + 'width' => 180, + 'height' => 320, + ] + ], + // For portrait with aspect ratio > 16:9, constrain width + 'portrait_over_16_9_too_wide' => [ + 'width' => 1080, + 'height' => 1921, + 'max' => 320, + 'assertion' => [ + 'width' => 320, + 'height' => 570, + ] + ], + // For portrait with aspect ratio > 16:9, constrain width + 'portrait_over_16_9_not_too_wide' => [ + 'width' => 1080, + 'height' => 1921, + 'max' => 1080, + 'assertion' => [ + 'width' => 1080, + 'height' => 1921, + ] + ], + 'portrait_round_up' => [ + 'width' => 479, + 'height' => 640, + 'max' => 320, + 'assertion' => [ + 'width' => 240, + 'height' => 320, + ] + ], + ]; + } + + /** + * Test the Images::getScalingDimensions() method + * + * @dataProvider dataScalingDimensions + */ + public function testGetScalingDimensions(int $width, int $height, int $max, array $assertion) + { + self::assertArraySubset($assertion, Images::getScalingDimensions($width, $height, $max)); + } }