mirror of
https://github.com/Intervention/image.git
synced 2025-08-12 08:54:03 +02:00
Fix bug & add CircleTest
This commit is contained in:
@@ -14,11 +14,10 @@ class Circle extends Ellipse
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
protected int $diameter,
|
int $diameter,
|
||||||
protected PointInterface $pivot = new Point()
|
PointInterface $pivot = new Point()
|
||||||
) {
|
) {
|
||||||
$this->setWidth($diameter);
|
parent::__construct($diameter, $diameter, $pivot);
|
||||||
$this->setHeight($diameter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,7 +41,7 @@ class Circle extends Ellipse
|
|||||||
*/
|
*/
|
||||||
public function diameter(): int
|
public function diameter(): int
|
||||||
{
|
{
|
||||||
return $this->diameter;
|
return $this->width();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,6 +62,6 @@ class Circle extends Ellipse
|
|||||||
*/
|
*/
|
||||||
public function radius(): int
|
public function radius(): int
|
||||||
{
|
{
|
||||||
return intval($this->diameter / 2);
|
return intval(round($this->diameter() / 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
40
tests/Geometry/CircleTest.php
Normal file
40
tests/Geometry/CircleTest.php
Normal 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());
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user