1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-23 05:52:47 +02:00
Files
intervention_image/tests/Unit/Geometry/RectangleResizerTest.php
2025-08-03 07:33:58 +02:00

134 lines
5.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Intervention\Image\Tests\Unit\Geometry;
use Intervention\Image\Alignment;
use PHPUnit\Framework\Attributes\CoversClass;
use Intervention\Image\Geometry\Rectangle;
use Intervention\Image\Geometry\Tools\RectangleResizer;
use Intervention\Image\Tests\Providers\ResizeDataProvider;
use PHPUnit\Framework\Attributes\DataProviderExternal;
use PHPUnit\Framework\TestCase;
#[CoversClass(RectangleResizer::class)]
final class RectangleResizerTest extends TestCase
{
public function testMake(): void
{
$resizer = RectangleResizer::to();
$this->assertInstanceOf(RectangleResizer::class, $resizer);
$resizer = RectangleResizer::to(height: 100);
$this->assertInstanceOf(RectangleResizer::class, $resizer);
$resizer = RectangleResizer::to(100);
$this->assertInstanceOf(RectangleResizer::class, $resizer);
$resizer = RectangleResizer::to(100, 100);
$this->assertInstanceOf(RectangleResizer::class, $resizer);
}
public function testToWidth(): void
{
$resizer = new RectangleResizer();
$result = $resizer->toWidth(100);
$this->assertInstanceOf(RectangleResizer::class, $result);
}
public function testToHeight(): void
{
$resizer = new RectangleResizer();
$result = $resizer->toHeight(100);
$this->assertInstanceOf(RectangleResizer::class, $result);
}
public function testToSize(): void
{
$resizer = new RectangleResizer();
$resizer = $resizer->toSize(new Rectangle(200, 100));
$this->assertInstanceOf(RectangleResizer::class, $resizer);
}
/**
* @param $resizeParameters array<string, int>
*/
#[DataProviderExternal(ResizeDataProvider::class, 'resizeDataProvider')]
public function testResize(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->resize($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
/**
* @param $resizeParameters array<string, int>
*/
#[DataProviderExternal(ResizeDataProvider::class, 'resizeDownDataProvider')]
public function testResizeDown(Rectangle $input, array $resizeParameters, Rectangle $result): void
{
$resizer = new RectangleResizer(...$resizeParameters);
$resized = $resizer->resizeDown($input);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
/**
* @param $resizeParameters array<string, int>
*/
#[DataProviderExternal(ResizeDataProvider::class, '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());
}
/**
* @param $resizeParameters array<string, int>
*/
#[DataProviderExternal(ResizeDataProvider::class, '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());
}
#[DataProviderExternal(ResizeDataProvider::class, 'coverDataProvider')]
public function testCover(Rectangle $origin, Rectangle $target, Rectangle $result): void
{
$resizer = new RectangleResizer();
$resizer->toSize($target);
$resized = $resizer->cover($origin);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
#[DataProviderExternal(ResizeDataProvider::class, 'containDataProvider')]
public function testContain(Rectangle $origin, Rectangle $target, Rectangle $result): void
{
$resizer = new RectangleResizer();
$resizer->toSize($target);
$resized = $resizer->contain($origin);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
}
#[DataProviderExternal(ResizeDataProvider::class, 'cropDataProvider')]
public function testCrop(Rectangle $origin, Rectangle $target, string|Alignment $position, Rectangle $result): void
{
$resizer = new RectangleResizer();
$resizer->toSize($target);
$resized = $resizer->crop($origin, $position);
$this->assertEquals($result->width(), $resized->width());
$this->assertEquals($result->height(), $resized->height());
$this->assertEquals($result->pivot()->x(), $resized->pivot()->x());
$this->assertEquals($result->pivot()->y(), $resized->pivot()->y());
}
}