diff --git a/src/Geometry/Circle.php b/src/Geometry/Circle.php index 15cc4811..53c0c75f 100644 --- a/src/Geometry/Circle.php +++ b/src/Geometry/Circle.php @@ -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)); } } diff --git a/tests/Geometry/CircleTest.php b/tests/Geometry/CircleTest.php new file mode 100644 index 00000000..7fbaa1a8 --- /dev/null +++ b/tests/Geometry/CircleTest.php @@ -0,0 +1,40 @@ +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()); + } +}