1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-01 11:30:16 +02:00

Fix bug & add CircleTest

This commit is contained in:
Oliver Vogel
2024-01-15 11:13:54 +01:00
parent dfd85bda69
commit 4971984623
2 changed files with 45 additions and 6 deletions

View File

@@ -14,11 +14,10 @@ class Circle extends Ellipse
* @return void
*/
public function __construct(
protected int $diameter,
protected PointInterface $pivot = new Point()
int $diameter,
PointInterface $pivot = new Point()
) {
$this->setWidth($diameter);
$this->setHeight($diameter);
parent::__construct($diameter, $diameter, $pivot);
}
/**
@@ -42,7 +41,7 @@ class Circle extends Ellipse
*/
public function diameter(): int
{
return $this->diameter;
return $this->width();
}
/**
@@ -63,6 +62,6 @@ class Circle extends Ellipse
*/
public function radius(): int
{
return intval($this->diameter / 2);
return intval(round($this->diameter() / 2));
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace Intervention\Image\Tests\Geometry;
use Intervention\Image\Geometry\Circle;
use Intervention\Image\Geometry\Point;
use Intervention\Image\Tests\TestCase;
class CircleTest extends TestCase
{
public function testConstructor(): void
{
$circle = new Circle(100, new Point(1, 2));
$this->assertInstanceOf(Circle::class, $circle);
$this->assertEquals(100, $circle->diameter());
$this->assertInstanceOf(Point::class, $circle->pivot());
}
public function testSetGetDiameter(): void
{
$circle = new Circle(100, new Point(1, 2));
$this->assertEquals(100, $circle->diameter());
$result = $circle->setDiameter(200);
$this->assertInstanceOf(Circle::class, $result);
$this->assertEquals(200, $result->diameter());
$this->assertEquals(200, $circle->diameter());
}
public function testSetGetRadius(): void
{
$circle = new Circle(100, new Point(1, 2));
$this->assertEquals(50, $circle->radius());
$result = $circle->setRadius(200);
$this->assertInstanceOf(Circle::class, $result);
$this->assertEquals(400, $result->diameter());
$this->assertEquals(400, $circle->diameter());
$this->assertEquals(200, $result->radius());
$this->assertEquals(200, $circle->radius());
}
}