private static void FiguresAdd(XElement xe, List <IFigure> figures, Material material)
        {
            double a, b, c;

            switch (xe.Element("form").Value)
            {
            case "Circle":
                a = int.Parse(xe.Element("radius").Value);
                figures.Add(factory.GetFigure(material, a));
                break;

            case "Rectangle":
                a = int.Parse(xe.Element("sideA").Value);
                b = int.Parse(xe.Element("sideB").Value);
                figures.Add(factory.GetFigure(material, a, b));
                break;

            case "Triangle":
                a = int.Parse(xe.Element("sideA").Value);
                b = int.Parse(xe.Element("sideB").Value);
                c = int.Parse(xe.Element("sideC").Value);
                figures.Add(factory.GetFigure(material, a, b, c));
                break;
            }
        }
Ejemplo n.º 2
0
        private static void FiguresAdd(XmlReader reader, List <IFigure> figures, Material material)
        {
            double a, b, c;

            reader.Read();
            String value = reader.ReadInnerXml();

            switch (value)
            {
            case "Circle":
                reader.Read();
                a = int.Parse(reader.ReadInnerXml());
                figures.Add(factory.GetFigure(material, a));
                break;

            case "Rectangle":
                reader.Read();
                a = int.Parse(reader.ReadInnerXml());
                reader.Read();
                b = int.Parse(reader.ReadInnerXml());
                figures.Add(factory.GetFigure(material, a, b));
                break;

            case "Triangle":
                reader.Read();
                a = int.Parse(reader.ReadInnerXml());
                reader.Read();
                b = int.Parse(reader.ReadInnerXml());
                reader.Read();
                c = int.Parse(reader.ReadInnerXml());
                figures.Add(factory.GetFigure(material, a, b, c));
                break;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get a colorless figure
        /// </summary>
        /// <param name="xmlElement"> XmlReader instance</param>
        /// <param name="shape"> Figure type</param>
        /// <returns></returns>
        private static Figure LoadFigure(XElement xmlElement, string shape)
        {
            Figure         figure = null;
            float          radius, width, height, a, b, c;
            FiguresFactory factory  = new FiguresFactory();
            Material       material = (xmlElement.Attributes().Count() == 2) ? Material.Paper : Material.Film;

            switch (shape)
            {
            case "Circle":
                radius = float.Parse(xmlElement.Element("Radius").Value);
                figure = factory.GetFigure(material, radius);
                break;

            case "Rectangle":
                width  = float.Parse(xmlElement.Element("Width").Value);
                height = float.Parse(xmlElement.Element("Height").Value);
                figure = factory.GetFigure(material, width, height);
                break;

            case "Triangle":
                a      = float.Parse(xmlElement.Element("SideA").Value);
                b      = float.Parse(xmlElement.Element("SideB").Value);
                c      = float.Parse(xmlElement.Element("SideC").Value);
                figure = factory.GetFigure(material, a, b, c);
                break;
            }

            return(figure);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get a colorless figure
        /// </summary>
        /// <param name="reader"> XmlReader instance</param>
        /// <param name="shape"> Figure type</param>
        /// <returns></returns>
        private static Figure LoadFigure(XmlReader reader, string shape)
        {
            Figure         figure = null;
            float          radius, width, height, a, b, c;
            FiguresFactory factory  = new FiguresFactory();
            Material       material = (reader.AttributeCount == 2)? Material.Paper : Material.Film;

            reader.Read();
            reader.Read();
            switch (shape)
            {
            case "Circle":
                radius = float.Parse(reader.ReadInnerXml());
                figure = factory.GetFigure(material, radius);
                break;

            case "Rectangle":
                width = float.Parse(reader.ReadInnerXml());
                reader.Read();
                height = float.Parse(reader.ReadInnerXml());
                figure = factory.GetFigure(material, width, height);
                break;

            case "Triangle":
                a = float.Parse(reader.ReadInnerXml());
                reader.Read();
                b = float.Parse(reader.ReadInnerXml());
                reader.Read();
                c      = float.Parse(reader.ReadInnerXml());
                figure = factory.GetFigure(material, a, b, c);
                break;
            }

            return(figure);
        }
Ejemplo n.º 5
0
 public void DrawCurrentFigure(double thickness, Color fill, Color border, Point pos)
 {
     if (PrevPos.X >= 0 && PrevPos.Y >= 0)
     {
         if (ImFigure != null)
         {
             ImFigure.Remove(Canva);
             ImFigure = null;
         }
         ChosenFigure        = CurrentFactory.GetFigure(thickness, fill, border, PrevPos, pos, ChosenFigure);
         ChosenFigure.NewPos = pos;
         PrevPos             = ChosenFigure.Draw(Canva);
         rewind.AddToFigureList(ChosenFigure);
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Initializes figuresFactory and figuresBox
        /// </summary>
        public TaskUnitTest()
        {
            figuresFactory = new FiguresFactory();
            figuresBox     = new Box();
            Figure figure = null;

            // Create a paper circle
            figure = figuresFactory.GetFigure(Material.Paper, 5);
            Painter.Colorize(figure, Сoloring.Orange);
            figuresBox.Add(figure);
            totalArea      += figure.GetArea();
            totalPerimeter += figure.GetPerimeter();

            // Create a film rectangle
            figure = figuresFactory.GetFigure(Material.Film, 2, 5);
            figuresBox.Add(figure);
            totalArea      += figure.GetArea();
            totalPerimeter += figure.GetPerimeter();

            // Create a paper triangle
            figure = figuresFactory.GetFigure(Material.Paper, 2, 2, 2);
            Painter.Colorize(figure, Сoloring.Green);
            figuresBox.Add(figure);
            totalArea      += figure.GetArea();
            totalPerimeter += figure.GetPerimeter();

            // Create a film triangle
            figure = figuresFactory.GetFigure(Material.Film, 3, 4, 5);
            figuresBox.Add(figure);
            totalArea      += figure.GetArea();
            totalPerimeter += figure.GetPerimeter();

            // Create a film circle
            figure = figuresFactory.GetFigure(Material.Film, 4);
            figuresBox.Add(figure);
            totalArea      += figure.GetArea();
            totalPerimeter += figure.GetPerimeter();
        }
Ejemplo n.º 7
0
        public void TestTriangleValue()
        {
            FiguresFactory factory = new FiguresFactory();
            IFigure        figure  = factory.GetFigure("triangle");

            var jparams = JToken.Parse(@"{ 'a': 10, 'b': 10, 'c': 10 }");

            figure.SetParamsFromJson(jparams);

            decimal expected = 43.30127018922193233818615854m;
            decimal area     = figure.CalculateArea();

            Assert.Equal(expected, area, 25);
        }
Ejemplo n.º 8
0
        public void TestCircleValue()
        {
            FiguresFactory factory = new FiguresFactory();
            IFigure        figure  = factory.GetFigure("circle");

            var jparams = JToken.Parse(@"{ 'radius': 10 }");

            figure.SetParamsFromJson(jparams);

            decimal expected = 314.15926535897900m;
            decimal area     = figure.CalculateArea();

            Assert.Equal(expected, area, 25);
        }
Ejemplo n.º 9
0
        public void EmptyBoxTest()
        {
            TestDelegate func1 = delegate
            {
                Box box = new Box();
                box.GetCircles();
            };
            TestDelegate func2 = delegate
            {
                Box box = new Box();
                box.GetFigure(1);
            };
            TestDelegate func3 = delegate
            {
                Box box = new Box();
                box.ReplaceFigures(1, factory.GetFigure(Material.Paper, 1));
            };

            Assert.Catch <EmptyBoxException>(func1);
            Assert.Catch <EmptyBoxException>(func2);
            Assert.Catch <EmptyBoxException>(func3);
        }
Ejemplo n.º 10
0
        public void CheckFiguresFactory()
        {
            Figure circle    = null;
            Figure rectangle = null;
            Figure triangle  = null;

            // Create factory
            FiguresFactory factory = new FiguresFactory();

            // Film Circle
            circle = factory.GetFigure(Material.Film, 3);
            Figure expCircleF = new CircleFilm(3);

            Assert.AreEqual(expCircleF, circle);

            // Paper Circle
            circle = factory.GetFigure(Material.Paper, 3);
            Figure expCircleP = new CirclePaper(3);

            Assert.AreEqual(expCircleP, circle);

            // Film Rectangle
            rectangle = factory.GetFigure(Material.Film, 2, 2);
            Figure expRectangleF = new RectangleFilm(2, 2);

            Assert.AreEqual(expRectangleF, rectangle);

            // Paper Rectangle
            rectangle = factory.GetFigure(Material.Paper, 2, 2);
            Figure expRectangleP = new RectanglePaper(2, 2);

            Assert.AreEqual(expRectangleP, rectangle);

            // Film Triangle
            triangle = factory.GetFigure(Material.Film, 2, 2, 2);
            Figure expTriangleF = new TriangleFilm(2, 2, 2);

            Assert.AreEqual(expTriangleF, triangle);

            // Paper Triangle
            triangle = factory.GetFigure(Material.Paper, 3, 4, 5);
            Figure expTriangleP = new TrianglePaper(3, 4, 5);

            Assert.AreEqual(expTriangleP, triangle);
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("Hello! It's batch calculator.");

            if (args.Length != 1)
            {
                System.Console.WriteLine("Usage: Program.exe <input json file>");
                return;
            }

            decimal totalArea = 0m;
            FiguresFactory figuresFactory = new FiguresFactory();

            using (StreamReader file = File.OpenText(args[0]))
            {
                JsonTextReader reader = new JsonTextReader(file);
                var jtoken = JToken.Load(reader);

                if (jtoken.Type != JTokenType.Array)
                {
                    System.Console.WriteLine("Error! File must contain json array");
                    return;
                }

                var jarray = (JArray)jtoken;

                foreach (JToken jtokenFigure in jarray)
                {
                    if (jtokenFigure.Type != JTokenType.Object)
                    {
                        System.Console.WriteLine("Error! Each element of array must contain object");
                    }

                    var jfigure = (JObject)jtokenFigure;

                    string figureName = jfigure.Value<string>("figure");

                    if (figureName == null)
                    {
                        System.Console.WriteLine("Error! Figure object must contain figure key");
                        return;
                    }

                    IFigure figure = figuresFactory.GetFigure(figureName);

                    if (figure == null)
                    {
                        System.Console.WriteLine("Error! Unknown figure");
                        return;
                    }

                    var jtokenParams = jfigure["params"];

                    figure.SetParamsFromJson(jtokenParams);

                    System.Console.WriteLine(figure.ToString());

                    decimal area = figure.CalculateArea();

                    System.Console.WriteLine("Area = " + area);
                    System.Console.WriteLine();

                    totalArea += area;
                }
            }

            System.Console.WriteLine("TotalArea = " + totalArea);

        }
        private Box InitializeFigures()
        {
            Box box = new Box();

            box.AddFigure(factory.GetFigure(Material.Film, 1));
            box.AddFigure(factory.GetFigure(Material.Film, 2, 3));
            box.AddFigure(factory.GetFigure(Material.Film, 4, 5, 6));
            box.AddFigure(factory.GetFigure(Material.Paper, 7));
            PaintBrush.PaintFigure(box.GetFigure(box.GetFiguresCount()), Paints.Azure);
            box.AddFigure(factory.GetFigure(Material.Paper, 8, 9));
            PaintBrush.PaintFigure(box.GetFigure(box.GetFiguresCount()), Paints.Orange);
            box.AddFigure(factory.GetFigure(Material.Paper, 10, 11, 12));
            PaintBrush.PaintFigure(box.GetFigure(box.GetFiguresCount()), Paints.Pink);
            return(box);
        }
Ejemplo n.º 13
0
        public IActionResult CalculateArea([FromBody] JToken jsonData)
        {
            if (jsonData.Type != JTokenType.Object)
            {
                return(BadRequest(new
                {
                    error = "Figure must be object"
                }));
            }

            var jfigure = (JObject)jsonData;

            string figureName = jfigure.Value <string>("figure");

            if (figureName == null)
            {
                return(BadRequest(new
                {
                    error = "Figure object must contain figure key"
                }));
            }

            FiguresFactory figuresFactory = new FiguresFactory();
            IFigure        figure         = figuresFactory.GetFigure(figureName);

            if (figure == null)
            {
                return(BadRequest(new
                {
                    error = "Unknown figure type"
                }));
            }

            var jtokenParams = jfigure["params"];

            try
            {
                figure.SetParamsFromJson(jtokenParams);
            }
            catch
            {
                return(BadRequest(new
                {
                    error = "Invalid figure arguments"
                }));
            }

            decimal area = 0m;

            try
            {
                area = figure.CalculateArea();
            }
            catch (System.ArgumentException)
            {
                return(BadRequest(new
                {
                    error = "Invalid figure arguments"
                }));
            }
            catch (System.OverflowException)
            {
                return(BadRequest(new
                {
                    error = "Overflow caused during calculation. Arguments is too big"
                }));
            }

            return(Ok(new { area = area }));
        }