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:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
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