1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-25 14:50:48 +02:00

Refactor RectangleResizerTest::class

This commit is contained in:
Oliver Vogel
2025-02-01 10:06:15 +01:00
parent 0f87254688
commit 1614ce4b84

View File

@@ -51,335 +51,96 @@ final class RectangleResizerTest extends TestCase
$this->assertInstanceOf(RectangleResizer::class, $resizer);
}
public function testResize(): void
#[DataProvider('resizeDataProvider')]
public function testResize(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
$size = new Rectangle(300, 200);
$resizer = new RectangleResizer();
$resizer->toWidth(150);
$result = $resizer->resize($size);
$this->assertEquals(150, $result->width());
$this->assertEquals(200, $result->height());
$size = new Rectangle(300, 200);
$resizer = new RectangleResizer();
$resizer->toWidth(20);
$resizer->toHeight(10);
$result = $resizer->resize($size);
$this->assertEquals(20, $result->width());
$this->assertEquals(10, $result->height());
$size = new Rectangle(300, 200);
$resizer = new RectangleResizer(width: 150);
$result = $resizer->resize($size);
$this->assertEquals(150, $result->width());
$this->assertEquals(200, $result->height());
$size = new Rectangle(300, 200);
$resizer = new RectangleResizer(height: 10, width: 20);
$result = $resizer->resize($size);
$this->assertEquals(20, $result->width());
$this->assertEquals(10, $result->height());
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->resize($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
public function testResizeDown(): void
public static function resizeDataProvider(): Generator
{
// 800x600 > 1000x2000 = 800x600
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(2000);
$result = $resizer->resizeDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
// 800x600 > 400x1000 = 400x600
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(1000);
$result = $resizer->resizeDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(600, $result->height());
// 800x600 > 1000x400 = 800x400
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(400);
$result = $resizer->resizeDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(400, $result->height());
// 800x600 > 400x300 = 400x300
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(300);
$result = $resizer->resizeDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
// 800x600 > 1000xnull = 800x600
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$result = $resizer->resizeDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
// 800x600 > nullx1000 = 800x600
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toHeight(1000);
$result = $resizer->resizeDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
yield [new Rectangle(300, 200), ['width' => 150], new Rectangle(150, 200)];
yield [new Rectangle(300, 200), ['height' => 150], new Rectangle(300, 150)];
yield [new Rectangle(300, 200), ['width' => 20, 'height' => 10], new Rectangle(20, 10)];
yield [new Rectangle(300, 200), [], new Rectangle(300, 200)];
}
public function testScale(): void
#[DataProvider('resizeDownDataProvider')]
public function testResizeDown(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
// 800x600 > 1000x2000 = 1000x750
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(2000);
$result = $resizer->scale($size);
$this->assertEquals(1000, $result->width());
$this->assertEquals(750, $result->height());
// 800x600 > 2000x1000 = 1333x1000
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(2000);
$resizer->toHeight(1000);
$result = $resizer->scale($size);
$this->assertEquals(1333, $result->width());
$this->assertEquals(1000, $result->height());
// // 800x600 > nullx3000 = 4000x3000
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toHeight(3000);
$result = $resizer->scale($size);
$this->assertEquals(4000, $result->width());
$this->assertEquals(3000, $result->height());
// // 800x600 > 8000xnull = 8000x6000
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(8000);
$result = $resizer->scale($size);
$this->assertEquals(8000, $result->width());
$this->assertEquals(6000, $result->height());
// // 800x600 > 100x400 = 100x75
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(100);
$resizer->toHeight(400);
$result = $resizer->scale($size);
$this->assertEquals(100, $result->width());
$this->assertEquals(75, $result->height());
// // 800x600 > 400x100 = 133x100
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(100);
$result = $resizer->scale($size);
$this->assertEquals(133, $result->width());
$this->assertEquals(100, $result->height());
// // 800x600 > nullx300 = 400x300
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toHeight(300);
$result = $resizer->scale($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
// // 800x600 > 80xnull = 80x60
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(80);
$result = $resizer->scale($size);
$this->assertEquals(80, $result->width());
$this->assertEquals(60, $result->height());
// // 640x480 > 225xnull = 225x169
$size = new Rectangle(640, 480);
$resizer = new RectangleResizer();
$resizer->toWidth(225);
$result = $resizer->scale($size);
$this->assertEquals(225, $result->width());
$this->assertEquals(169, $result->height());
// // 640x480 > 223xnull = 223x167
$size = new Rectangle(640, 480);
$resizer = new RectangleResizer();
$resizer->toWidth(223);
$result = $resizer->scale($size);
$this->assertEquals(223, $result->width());
$this->assertEquals(167, $result->height());
// // 600x800 > 300x300 = 225x300
$size = new Rectangle(600, 800);
$resizer = new RectangleResizer();
$resizer->toWidth(300);
$resizer->toHeight(300);
$result = $resizer->scale($size);
$this->assertEquals(225, $result->width());
$this->assertEquals(300, $result->height());
// // 800x600 > 400x10 = 13x10
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(10);
$result = $resizer->scale($size);
$this->assertEquals(13, $result->width());
$this->assertEquals(10, $result->height());
// // 800x600 > 1000x1200 = 1000x750
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(1200);
$result = $resizer->scale($size);
$this->assertEquals(1000, $result->width());
$this->assertEquals(750, $result->height());
$size = new Rectangle(12000, 12);
$resizer = new RectangleResizer();
$resizer->toWidth(4000);
$resizer->toHeight(3000);
$result = $resizer->scale($size);
$this->assertEquals(4000, $result->width());
$this->assertEquals(4, $result->height());
$size = new Rectangle(12, 12000);
$resizer = new RectangleResizer();
$resizer->toWidth(4000);
$resizer->toHeight(3000);
$result = $resizer->scale($size);
$this->assertEquals(3, $result->width());
$this->assertEquals(3000, $result->height());
$size = new Rectangle(12000, 6000);
$resizer = new RectangleResizer();
$resizer->toWidth(4000);
$resizer->toHeight(3000);
$result = $resizer->scale($size);
$this->assertEquals(4000, $result->width());
$this->assertEquals(2000, $result->height());
$size = new Rectangle(3, 3000);
$resizer = new RectangleResizer();
$resizer->toHeight(300);
$result = $resizer->scale($size);
$this->assertEquals(1, $result->width());
$this->assertEquals(300, $result->height());
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->resizeDown($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
public function testScaleDown(): void
public static function resizeDownDataProvider(): Generator
{
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(2000);
$result = $resizer->scaleDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 2000], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 1000], new Rectangle(400, 600)];
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 400], new Rectangle(800, 400)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 300], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['width' => 1000], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['height' => 1000], new Rectangle(800, 600)];
}
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(600);
$result = $resizer->scaleDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
#[DataProvider('scaleDataProvider')]
public function testScale(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->scale($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$resizer->toHeight(300);
$result = $resizer->scaleDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
public static function scaleDataProvider(): Generator
{
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 2000], new Rectangle(1000, 750)];
yield [new Rectangle(800, 600), ['width' => 2000, 'height' => 1000], new Rectangle(1333, 1000)];
yield [new Rectangle(800, 600), ['height' => 3000], new Rectangle(4000, 3000)];
yield [new Rectangle(800, 600), ['width' => 8000], new Rectangle(8000, 6000)];
yield [new Rectangle(800, 600), ['width' => 100, 'height' => 400], new Rectangle(100, 75)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 100], new Rectangle(133, 100)];
yield [new Rectangle(800, 600), ['height' => 300], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['width' => 80], new Rectangle(80, 60)];
yield [new Rectangle(640, 480), ['width' => 225], new Rectangle(225, 169)];
yield [new Rectangle(640, 480), ['width' => 223], new Rectangle(223, 167)];
yield [new Rectangle(600, 800), ['width' => 300, 'height' => 300], new Rectangle(225, 300)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 10], new Rectangle(13, 10)];
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 1200], new Rectangle(1000, 750)];
yield [new Rectangle(12000, 12), ['width' => 4000, 'height' => 3000], new Rectangle(4000, 4)];
yield [new Rectangle(12, 12000), ['width' => 4000, 'height' => 3000], new Rectangle(3, 3000)];
yield [new Rectangle(12000, 6000), ['width' => 4000, 'height' => 3000], new Rectangle(4000, 2000)];
yield [new Rectangle(3, 3000), ['height' => 300], new Rectangle(1, 300)];
}
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(1000);
$result = $resizer->scaleDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
#[DataProvider('scaleDownDataProvider')]
public function testScaleDown(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->scaleDown($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$result = $resizer->scaleDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toHeight(300);
$result = $resizer->scaleDown($size);
$this->assertEquals(400, $result->width());
$this->assertEquals(300, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(1000);
$result = $resizer->scaleDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toHeight(1000);
$result = $resizer->scaleDown($size);
$this->assertEquals(800, $result->width());
$this->assertEquals(600, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(100);
$result = $resizer->scaleDown($size);
$this->assertEquals(100, $result->width());
$this->assertEquals(75, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(300);
$resizer->toHeight(200);
$result = $resizer->scaleDown($size);
$this->assertEquals(267, $result->width());
$this->assertEquals(200, $result->height());
$size = new Rectangle(600, 800);
$resizer = new RectangleResizer();
$resizer->toWidth(300);
$resizer->toHeight(300);
$result = $resizer->scaleDown($size);
$this->assertEquals(225, $result->width());
$this->assertEquals(300, $result->height());
$size = new Rectangle(800, 600);
$resizer = new RectangleResizer();
$resizer->toWidth(400);
$resizer->toHeight(10);
$result = $resizer->scaleDown($size);
$this->assertEquals(13, $result->width());
$this->assertEquals(10, $result->height());
$size = new Rectangle(3, 3000);
$resizer = new RectangleResizer();
$resizer->toHeight(300);
$result = $resizer->scale($size);
$this->assertEquals(1, $result->width());
$this->assertEquals(300, $result->height());
public static function scaleDownDataProvider(): Generator
{
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 2000], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 600], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['width' => 1000, 'height' => 300], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 1000], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['width' => 400], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['height' => 300], new Rectangle(400, 300)];
yield [new Rectangle(800, 600), ['width' => 1000], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['height' => 1000], new Rectangle(800, 600)];
yield [new Rectangle(800, 600), ['width' => 100], new Rectangle(100, 75)];
yield [new Rectangle(800, 600), ['width' => 300, 'height' => 200], new Rectangle(267, 200)];
yield [new Rectangle(600, 800), ['width' => 300, 'height' => 300], new Rectangle(225, 300)];
yield [new Rectangle(800, 600), ['width' => 400, 'height' => 10], new Rectangle(13, 10)];
yield [new Rectangle(3, 3000), ['height' => 300], new Rectangle(1, 300)];
}
#[DataProvider('coverDataProvider')]