mirror of
https://github.com/Intervention/image.git
synced 2025-08-25 23:06:13 +02:00
Externalize data provider
This commit is contained in:
149
tests/Providers/ResizeDataProvider.php
Normal file
149
tests/Providers/ResizeDataProvider.php
Normal file
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Intervention\Image\Tests\Providers;
|
||||
|
||||
use Generator;
|
||||
use Intervention\Image\Geometry\Point;
|
||||
use Intervention\Image\Geometry\Rectangle;
|
||||
|
||||
class ResizeDataProvider
|
||||
{
|
||||
public static function resizeDataProvider(): Generator
|
||||
{
|
||||
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 static function resizeDownDataProvider(): Generator
|
||||
{
|
||||
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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
public static function coverDataProvider(): Generator
|
||||
{
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(133, 100)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(200, 150)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(267, 200)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(2000, 1500)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(2667, 2000)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)];
|
||||
yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(160, 120)];
|
||||
yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(100, 133)];
|
||||
yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(800, 800)];
|
||||
}
|
||||
|
||||
public static function containDataProvider(): Generator
|
||||
{
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(100, 75)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(133, 100)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(100, 75)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(13, 10)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(10, 8)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)];
|
||||
yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(120, 90)];
|
||||
yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(75, 100)];
|
||||
yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(600, 600)];
|
||||
}
|
||||
|
||||
public static function cropDataProvider(): Generator
|
||||
{
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(100, 100),
|
||||
'center',
|
||||
new Rectangle(100, 100, new Point(350, 250))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(200, 100),
|
||||
'center',
|
||||
new Rectangle(200, 100, new Point(300, 250))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(100, 200),
|
||||
'center',
|
||||
new Rectangle(100, 200, new Point(350, 200))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(2000, 10),
|
||||
'center',
|
||||
new Rectangle(2000, 10, new Point(-600, 295))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(10, 2000),
|
||||
'center',
|
||||
new Rectangle(10, 2000, new Point(395, -700))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(800, 600),
|
||||
'center',
|
||||
new Rectangle(800, 600, new Point(0, 0))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(400, 300),
|
||||
new Rectangle(120, 120),
|
||||
'center',
|
||||
new Rectangle(120, 120, new Point(140, 90))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(600, 800),
|
||||
new Rectangle(100, 100),
|
||||
'center',
|
||||
new Rectangle(100, 100, new Point(250, 350))
|
||||
];
|
||||
}
|
||||
}
|
@@ -4,13 +4,12 @@ declare(strict_types=1);
|
||||
|
||||
namespace Intervention\Image\Tests\Unit\Geometry;
|
||||
|
||||
use Generator;
|
||||
use Intervention\Image\Alignment;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\Attributes\DataProvider;
|
||||
use Intervention\Image\Geometry\Point;
|
||||
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)]
|
||||
@@ -55,7 +54,7 @@ final class RectangleResizerTest extends TestCase
|
||||
/**
|
||||
* @param $resizeParameters array<string, int>
|
||||
*/
|
||||
#[DataProvider('resizeDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'resizeDataProvider')]
|
||||
public function testResize(Rectangle $input, array $resizeParameters, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer(...$resizeParameters);
|
||||
@@ -64,18 +63,10 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->height());
|
||||
}
|
||||
|
||||
public static function resizeDataProvider(): Generator
|
||||
{
|
||||
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)];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $resizeParameters array<string, int>
|
||||
*/
|
||||
#[DataProvider('resizeDownDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'resizeDownDataProvider')]
|
||||
public function testResizeDown(Rectangle $input, array $resizeParameters, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer(...$resizeParameters);
|
||||
@@ -84,21 +75,10 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->height());
|
||||
}
|
||||
|
||||
public static function resizeDownDataProvider(): Generator
|
||||
{
|
||||
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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $resizeParameters array<string, int>
|
||||
*/
|
||||
#[DataProvider('scaleDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'scaleDataProvider')]
|
||||
public function testScale(Rectangle $input, array $resizeParameters, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer(...$resizeParameters);
|
||||
@@ -107,32 +87,10 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $resizeParameters array<string, int>
|
||||
*/
|
||||
#[DataProvider('scaleDownDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'scaleDownDataProvider')]
|
||||
public function testScaleDown(Rectangle $input, array $resizeParameters, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer(...$resizeParameters);
|
||||
@@ -141,25 +99,7 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->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)];
|
||||
yield [new Rectangle(800, 600), [], new Rectangle(800, 600)];
|
||||
}
|
||||
|
||||
#[DataProvider('coverDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'coverDataProvider')]
|
||||
public function testCover(Rectangle $origin, Rectangle $target, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer();
|
||||
@@ -169,20 +109,7 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->height());
|
||||
}
|
||||
|
||||
public static function coverDataProvider(): Generator
|
||||
{
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(133, 100)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(200, 150)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(267, 200)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(2000, 1500)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(2667, 2000)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)];
|
||||
yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(160, 120)];
|
||||
yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(100, 133)];
|
||||
yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(800, 800)];
|
||||
}
|
||||
|
||||
#[DataProvider('containDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'containDataProvider')]
|
||||
public function testContain(Rectangle $origin, Rectangle $target, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer();
|
||||
@@ -192,20 +119,7 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->height(), $resized->height());
|
||||
}
|
||||
|
||||
public static function containDataProvider(): Generator
|
||||
{
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 100), new Rectangle(100, 75)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(200, 100), new Rectangle(133, 100)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(100, 200), new Rectangle(100, 75)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(2000, 10), new Rectangle(13, 10)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(10, 2000), new Rectangle(10, 8)];
|
||||
yield [new Rectangle(800, 600), new Rectangle(800, 600), new Rectangle(800, 600)];
|
||||
yield [new Rectangle(400, 300), new Rectangle(120, 120), new Rectangle(120, 90)];
|
||||
yield [new Rectangle(600, 800), new Rectangle(100, 100), new Rectangle(75, 100)];
|
||||
yield [new Rectangle(100, 100), new Rectangle(800, 600), new Rectangle(600, 600)];
|
||||
}
|
||||
|
||||
#[DataProvider('cropDataProvider')]
|
||||
#[DataProviderExternal(ResizeDataProvider::class, 'cropDataProvider')]
|
||||
public function testCrop(Rectangle $origin, Rectangle $target, string|Alignment $position, Rectangle $result): void
|
||||
{
|
||||
$resizer = new RectangleResizer();
|
||||
@@ -216,56 +130,4 @@ final class RectangleResizerTest extends TestCase
|
||||
$this->assertEquals($result->pivot()->x(), $resized->pivot()->x());
|
||||
$this->assertEquals($result->pivot()->y(), $resized->pivot()->y());
|
||||
}
|
||||
|
||||
public static function cropDataProvider(): Generator
|
||||
{
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(100, 100),
|
||||
'center',
|
||||
new Rectangle(100, 100, new Point(350, 250))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(200, 100),
|
||||
'center',
|
||||
new Rectangle(200, 100, new Point(300, 250))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(100, 200),
|
||||
'center',
|
||||
new Rectangle(100, 200, new Point(350, 200))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(2000, 10),
|
||||
'center',
|
||||
new Rectangle(2000, 10, new Point(-600, 295))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(10, 2000),
|
||||
'center',
|
||||
new Rectangle(10, 2000, new Point(395, -700))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(800, 600),
|
||||
new Rectangle(800, 600),
|
||||
'center',
|
||||
new Rectangle(800, 600, new Point(0, 0))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(400, 300),
|
||||
new Rectangle(120, 120),
|
||||
'center',
|
||||
new Rectangle(120, 120, new Point(140, 90))
|
||||
];
|
||||
yield [
|
||||
new Rectangle(600, 800),
|
||||
new Rectangle(100, 100),
|
||||
'center',
|
||||
new Rectangle(100, 100, new Point(250, 350))
|
||||
];
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user