public void ShouldReturnReturnAStringListWithAllTheShapes()
        {
            GFTApplication.ShapesContainer container = new ShapesContainer();

            GFTApplication.Models.Circle    circle    = new Models.Circle(1.7f, -5.05f, 6.9f);
            GFTApplication.Models.Square    square    = new Models.Square(3.55f, 4.1f, 2.77f);
            GFTApplication.Models.Rectangle rectangle = new Models.Rectangle(3.5f, 2.0f, 5.6f, 7.2f);
            GFTApplication.Models.Triangle  triangle  = new Models.Triangle(4.5f, 1, -2.5f, -33, 23, 0.3f);
            GFTApplication.Models.Donut     donut     = new Models.Donut(4.5f, 7.8f, 1.5f, 1.8f);

            circle.Id    = 1;
            square.Id    = 2;
            rectangle.Id = 3;
            triangle.Id  = 4;
            donut.Id     = 5;

            container.AddShape(circle);
            container.AddShape(square);
            container.AddShape(rectangle);
            container.AddShape(triangle);
            container.AddShape(donut);

            List <string> shouldBe = new List <string>();

            shouldBe.Add("shape 1: circle with center at (1.7, -5.05) and radius 6.9");
            shouldBe.Add("shape 2: square with center at (3.55, 4.1) and side 2.77");
            shouldBe.Add("shape 3: rectangle with center at (3.5, 2) and side1 5.6, side2 7.2");
            shouldBe.Add("shape 4: triangle with coordinates at (4.5 1, -2.5 -33, 23 0.3)");
            shouldBe.Add("shape 5: donut with center at (4.5, 7.8) and radius1 1.5, radius2 1.8");

            CollectionAssert.AreEqual(shouldBe, container.GetShapeList().ToList());
        }
        public void ShouldFindShapesThatContainsTheSpecifiedPoint()
        {
            GFTApplication.ShapesContainer container = new ShapesContainer();

            GFTApplication.Models.Circle    circle    = new Models.Circle(1.7f, -5.05f, 6.9f);
            GFTApplication.Models.Square    square    = new Models.Square(3.55f, 4.1f, 2.77f);
            GFTApplication.Models.Rectangle rectangle = new Models.Rectangle(3.5f, 2.0f, 5.6f, 7.2f);
            GFTApplication.Models.Triangle  triangle  = new Models.Triangle(4.5f, 1, -2.5f, -33, 23, 0.3f);
            GFTApplication.Models.Donut     donut     = new Models.Donut(4.5f, 7.8f, 1.5f, 1.8f);

            circle.Id    = 1;
            square.Id    = 2;
            rectangle.Id = 3;
            triangle.Id  = 4;
            donut.Id     = 5;

            container.AddShape(circle);
            container.AddShape(square);
            container.AddShape(rectangle);
            container.AddShape(triangle);
            container.AddShape(donut);

            List <string> shouldBe = new List <string>();

            shouldBe.Add("shape 1: circle with center at (1.7, -5.05) and radius 6.9 | Area: 149.571230371968");
            shouldBe.Add("shape 4: triangle with coordinates at (4.5 1, -2.5 -33, 23 0.3) | Area: 316.950012207031");
            shouldBe.Add("Total Area of shapes: 466.521242578999");

            CollectionAssert.AreEqual(shouldBe, container.FindInPoint(1.5f, -5).ToList());
        }
Esempio n. 3
0
        /// <summary>
        /// Validate the triangle model by default rules
        /// <seealso cref="https://en.wikipedia.org/wiki/Triangle#Similarity_and_congruence"/>
        /// </summary>
        /// <param name="triangle">The <see cref="Triangle"/> model to validate</param>
        /// <returns><see cref="TriangleType.Error"/> if not valid, otherwise goto next calculating step</returns>
        public override TriangleType HandleRequest(Models.Triangle triangle)
        {
            // sides should have positive values
            if (triangle.A <= 0 || triangle.B <= 0 || triangle.C <= 0)
            {
                // Logger.LogError(new TriangleHandlerException("sides should have positive values"))
                return(TriangleType.Error);
            }

            // summ of two sides should be more that last side
            if ((long)triangle.A + triangle.B <= triangle.C ||
                (long)triangle.A + triangle.C <= triangle.B ||
                (long)triangle.B + triangle.C <= triangle.A)
            {
                // Logger.LogError(new TriangleHandlerException("summ of two sides should be more that last side"))
                return(TriangleType.Error);
            }

            if (successor?.HandleRequest(triangle) != null)
            {
                return(successor.HandleRequest(triangle));
            }

            // Logger.LogError(new TriangleHandlerException("Unexpected error"))
            return(TriangleType.Error);
        }
        /// <summary>
        /// An isosceles triangle has two sides of equal length.
        /// </summary>
        /// <param name="triangle">The <see cref="Triangle"/> model to calculate</param>
        /// <returns>If is <see cref="TriangleType.Isosceles"/> return it, if not goto next calculating step</returns>
        public override TriangleType HandleRequest(Models.Triangle triangle)
        {
            if (triangle.A == triangle.B || triangle.A == triangle.C || triangle.B == triangle.C)
            {
                return(TriangleType.Isosceles);
            }

            return(successor?.HandleRequest(triangle) ?? TriangleType.Error);
        }
        public void ShopuldReturnATriangle()
        {
            GFTApplication.Models.Triangle triangle = new Models.Triangle(4.5f, 1, -2.5f, -33, 23f, 0.3f);
            var real = GFTApplication.Interpreter.TokenReader.ReadToken("triangle 4.5 1 -2.5 -33 23 0.3");

            triangle.Id = 1;
            real.Id     = 1;
            Assert.AreEqual(triangle.ToString(), real.ToString());
        }
Esempio n. 6
0
        /// <summary>
        /// An equilateral triangle has all sides the same length.
        /// </summary>
        /// <param name="triangle">The <see cref="Triangle"/> model to calculate</param>
        /// <returns>If is <see cref="TriangleType.Equilateral"/> return it, if not goto next calculating step</returns>
        public override TriangleType HandleRequest(Models.Triangle triangle)
        {
            // sides should have positive values
            if (triangle.A == triangle.B && triangle.A == triangle.C)
            {
                return(TriangleType.Equilateral);
            }

            return(successor?.HandleRequest(triangle) ?? TriangleType.Error);
        }
Esempio n. 7
0
        public void Triangle()
        {
            //arrange
            List <int> measurements = new List <int> {
                7, 10, 5
            };
            var model = new Models.Triangle(measurements);

            //assert
            Assert.AreEqual(true, model.ValidTriangle);
        }
Esempio n. 8
0
        /// <summary>
        /// A scalene triangle has all its sides of different lengths.
        /// </summary>
        /// <param name="triangle">The <see cref="Triangle"/> model to calculate</param>
        /// <returns>If is <see cref="TriangleType.Scalene"/> return it, if not goto next calculating step</returns>
        public override TriangleType HandleRequest(Models.Triangle triangle)
        {
            if (triangle.A != triangle.B &&
                triangle.A != triangle.C &&
                triangle.B != triangle.C)
            {
                return(TriangleType.Scalene);
            }

            return(successor?.HandleRequest(triangle) ?? TriangleType.Error);
        }
        public IActionResult Get(int V1X, int V1Y, int V2X, int V2Y, int V3X, int V3Y)
        {
            var triangle = new Models.Triangle(new Point(V1X, V1Y), new Point(V2X, V2Y), new Point(V3X, V3Y));

            if (triangle.IsValid)
            {
                return(Ok(new { Row = triangle.Row.ToString(), Column = triangle.Column }));
            }
            else
            {
                return(BadRequest("Validation error"));
            }
        }
        public IActionResult Get(Models.Rows row, int column)
        {
            var triangle = new Models.Triangle(row, column);

            if (triangle.IsValid)
            {
                return(Ok(triangle.Coordinates));
            }
            else
            {
                return(BadRequest("Validation error"));
            }
        }
 public abstract TriangleType HandleRequest(Models.Triangle triangle);
Esempio n. 12
0
        private void BtnCreateTriangle_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
        {
            var triangle = new Models.Triangle(this.drawingCanvas, Colors.Blue);

            this.DrawShape(triangle);
        }