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:
@@ -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')]
|
||||
|
Reference in New Issue
Block a user