diff --git a/Shapes/Triangle.cs b/Shapes/Triangle.cs index 5ed31fd..b3c8b59 100644 --- a/Shapes/Triangle.cs +++ b/Shapes/Triangle.cs @@ -26,13 +26,13 @@ namespace Shapes Lines.Add(new Line(point2, point3)); Lines.Add(new Line(point3, point1)); - var centerOfLine3 = (point1 - point3) / 2 + point1; - var centerTriangle = (point1 - centerOfLine3) / 2 + point1; + var centerOfLine1 = (point1 - point2) / 2 + point1; + var centerTriangle = (point1 - centerOfLine1) / 2 + point1; CenterPoint = centerTriangle; - Height = new Line(point1, centerOfLine3).ComputeLength(); + Height = new Line(point1, point3).ComputeLength(); Width = new Line(point1, point2).ComputeLength(); } @@ -58,6 +58,9 @@ namespace Shapes var centerOfLine3 = (point1 - point3) / 2 + point1; var centerTriangle = (point1 - centerOfLine3) / 2 + point1; + + Height = new Line(point1, point3).ComputeLength(); + Width = new Line(point1, point2).ComputeLength(); CenterPoint = centerTriangle; } diff --git a/UnitTests/TriangleTests.cs b/UnitTests/TriangleTests.cs index 0f1d2a0..e1f30b7 100644 --- a/UnitTests/TriangleTests.cs +++ b/UnitTests/TriangleTests.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using System.Drawing; using NUnit.Framework; using Shapes; @@ -19,57 +21,114 @@ namespace Tests var point2 = new Point(3, 0); var point3 = new Point(0, 3); var triangle = new Triangle(point1, point2, point3); - - Assert.AreEqual( Color.Empty, triangle.Fill); + + Assert.AreEqual(Color.Empty, triangle.Fill); triangle.Fill = Color.Aqua; Assert.AreEqual(Color.Aqua, triangle.Fill); Assert.AreEqual(Color.Black, triangle.Stroke); Assert.AreEqual(point1, triangle.Points[0]); Assert.AreEqual(point2, triangle.Points[1]); Assert.AreEqual(point3, triangle.Points[2]); - Assert.AreEqual(point1, triangle.Lines[0].Point1 ); - Assert.AreEqual(point2, triangle.Lines[0].Point2 ); - Assert.AreEqual(point2, triangle.Lines[1].Point1 ); - Assert.AreEqual(point3, triangle.Lines[1].Point2 ); - Assert.AreEqual(point3, triangle.Lines[2].Point1 ); - Assert.AreEqual(point1, triangle.Lines[2].Point2 ); - + Assert.AreEqual(point1, triangle.Lines[0].Point1); + Assert.AreEqual(point2, triangle.Lines[0].Point2); + Assert.AreEqual(point2, triangle.Lines[1].Point1); + Assert.AreEqual(point3, triangle.Lines[1].Point2); + Assert.AreEqual(point3, triangle.Lines[2].Point1); + Assert.AreEqual(point1, triangle.Lines[2].Point2); + Assert.AreEqual(3, triangle.Height); + Assert.AreEqual(3, triangle.Width); + } + [Test] public void TriangleXY() { var point1x = 0; - var point2x = 3; - var point3x = 0; var point1y = 0; + + var point2x = 3; var point2y = 0; + + var point3x = 0; var point3y = 3; - + var triangle = new Triangle(point1x, point1y, point2x, point2y, point3x, point3y); - - Assert.AreEqual( Color.Empty, triangle.Fill); + + Assert.AreEqual(Color.Empty, triangle.Fill); triangle.Fill = Color.Aqua; Assert.AreEqual(Color.Aqua, triangle.Fill); Assert.AreEqual(Color.Black, triangle.Stroke); Assert.AreEqual(point1x, triangle.Points[0].X); Assert.AreEqual(point2x, triangle.Points[1].X); Assert.AreEqual(point3x, triangle.Points[2].X); - Assert.AreEqual(point1x, triangle.Lines[0].Point1.X ); - Assert.AreEqual(point2x, triangle.Lines[0].Point2.X ); - Assert.AreEqual(point2x, triangle.Lines[1].Point1.X ); - Assert.AreEqual(point3x, triangle.Lines[1].Point2.X ); - Assert.AreEqual(point3x, triangle.Lines[2].Point1.X ); - Assert.AreEqual(point1x, triangle.Lines[2].Point2.X ); + Assert.AreEqual(point1x, triangle.Lines[0].Point1.X); + Assert.AreEqual(point2x, triangle.Lines[0].Point2.X); + Assert.AreEqual(point2x, triangle.Lines[1].Point1.X); + Assert.AreEqual(point3x, triangle.Lines[1].Point2.X); + Assert.AreEqual(point3x, triangle.Lines[2].Point1.X); + Assert.AreEqual(point1x, triangle.Lines[2].Point2.X); + + Assert.AreEqual(point1y, triangle.Points[0].Y); Assert.AreEqual(point2y, triangle.Points[1].Y); Assert.AreEqual(point3y, triangle.Points[2].Y); - Assert.AreEqual(point1y, triangle.Lines[0].Point1.Y ); - Assert.AreEqual(point2y, triangle.Lines[0].Point2.Y ); - Assert.AreEqual(point2y, triangle.Lines[1].Point1.Y ); - Assert.AreEqual(point3y, triangle.Lines[1].Point2.Y ); - Assert.AreEqual(point3y, triangle.Lines[2].Point1.Y ); - Assert.AreEqual(point1y, triangle.Lines[2].Point2.Y ); - + Assert.AreEqual(point1y, triangle.Lines[0].Point1.Y); + Assert.AreEqual(point2y, triangle.Lines[0].Point2.Y); + Assert.AreEqual(point2y, triangle.Lines[1].Point1.Y); + Assert.AreEqual(point3y, triangle.Lines[1].Point2.Y); + Assert.AreEqual(point3y, triangle.Lines[2].Point1.Y); + Assert.AreEqual(point1y, triangle.Lines[2].Point2.Y); + Assert.AreEqual(3, triangle.Height); + Assert.AreEqual(3, triangle.Width); + + } + + [Test] + public void ComputeAreaTest() + { + var point1 = new Point(0, 0); + var point2 = new Point(3, 0); + var point3 = new Point(0, 3); + var area = 9 * .5; + + var triangle = new Triangle(point1, point2, point3); + + Assert.LessOrEqual(Math.Abs(triangle.ComputeArea() - area), 3.0E-15d); + } + + [Test] + public void ScaleTest() + { + List points = new List(); + + var triangle = new Triangle( + new Point(0, 0), + new Point(1, 0), + new Point(0, 1)); + + points.Add(new Point(0, 0)); + points.Add(new Point(1, 0)); + points.Add(new Point(0, 1)); + triangle.Scale(10); + for (int i = 0; i < triangle.Points.Count; i++) + { + points[i].X *= 10; + points[i].Y *= 10; + Assert.AreEqual(points[i].X, triangle.Points[i].X); + Assert.AreEqual(points[i].Y, triangle.Points[i].Y); + } + } + + [Test] + public void ComputeCenterTest() + { + var triangle = new Triangle( + new Point(0, 0), + new Point(1, 0), + new Point(0, 1)); + Assert.AreEqual(.25, triangle.CenterPoint.X); + Assert.AreEqual(.5, triangle.CenterPoint.Y); + } } } \ No newline at end of file