Example #1
0
        /// <summary>
        /// Reads the file.
        /// </summary>
        /// <param name="file">The file.</param>
        /// <returns>List of shapes.</returns>
        public List <IShape> ReadFile(string file)
        {
            List <IShape> shapes = new List <IShape>();

            using (XmlReader reader = XmlReader.Create(file))
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (reader.Name.Equals("circle"))
                        {
                            Circle circle;
                            if (reader.GetAttribute("material").Equals("paper"))
                            {
                                circle = new PaperCircle(
                                    double.Parse(reader.GetAttribute("radius")),
                                    (Color)Enum.Parse(typeof(Color), reader.GetAttribute("color")));
                            }
                            else
                            {
                                circle = new MembraneCircle(double.Parse(reader.GetAttribute("radius")));
                            }
                            shapes.Add(circle);
                        }
                        if (reader.Name.Equals("square"))
                        {
                            Square square;
                            if (reader.GetAttribute("material").Equals("paper"))
                            {
                                square = new PaperSquare(double.Parse(reader.GetAttribute("side")), (Color)Enum.Parse(typeof(Color), reader.GetAttribute("color")));
                            }
                            else
                            {
                                square = new MembraneSquare(double.Parse(reader.GetAttribute("side")));
                            }
                            shapes.Add(square);
                        }
                        if (reader.Name.Equals("rectangle"))
                        {
                            Rectangle rectangle;
                            if (reader.GetAttribute("material").Equals("paper"))
                            {
                                rectangle = new PaperRectangle(double.Parse(reader.GetAttribute("firstSide")),
                                                               double.Parse(reader.GetAttribute("secondSide")),
                                                               (Color)Enum.Parse(typeof(Color), reader.GetAttribute("color")));
                            }
                            else
                            {
                                rectangle = new MembraneRectangle(
                                    double.Parse(reader.GetAttribute("firstSide")),
                                    double.Parse(reader.GetAttribute("secondSide")));
                            }
                            shapes.Add(rectangle);
                        }
                    }
                }
            }
            return(shapes);
        }
Example #2
0
        public void CreatingRectangleMustReturnObject(double firstSide, double secondSide)
        {
            Rectangle paperRectangle    = new PaperRectangle(firstSide, secondSide);
            Rectangle membraneRectangle = new MembraneRectangle(firstSide, secondSide);

            Assert.IsNotNull(paperRectangle);
            Assert.IsNotNull(membraneRectangle);
        }
Example #3
0
        public void TestGetPerimeterOfRectangle(double firstSide, double secondSide, double expectedArea)
        {
            Rectangle paperRectangle    = new PaperRectangle(firstSide, secondSide);
            Rectangle membraneRectangle = new MembraneRectangle(firstSide, secondSide);

            Assert.AreEqual(expectedArea, paperRectangle.GetPerimeter());
            Assert.AreEqual(expectedArea, membraneRectangle.GetPerimeter());
        }
Example #4
0
        public void TestCutShapeFromAnotherShape(double smallerRadius, double biggerRadius, double smallerSide,
                                                 double biggerSide, double smallerFirstSide, double smallerSecondSide,
                                                 double biggerFirstSide, double biggerSecondSide)
        {
            //Cutting shape from another shape is available only in case when area of source shape bigger then area target shape
            //Cutting shape from another shape also is available only for equals materials

            Circle    bigCircle           = new MembraneCircle(biggerRadius);
            Circle    smallCircle         = new MembraneCircle(smallerRadius, bigCircle);
            Square    bigSquare           = new MembraneSquare(biggerSide);
            Square    smallSquare         = new MembraneSquare(smallerSide, bigSquare);
            Rectangle bigRectangle        = new MembraneRectangle(biggerFirstSide, biggerSecondSide);
            Rectangle smallRectangle      = new MembraneRectangle(smallerFirstSide, smallerSecondSide, bigRectangle);
            Circle    circleFromRectangle = new MembraneCircle(smallerRadius, bigRectangle);
            Square    squareFromRectangle = new MembraneSquare(smallerSide, bigRectangle);

            Assert.IsNotNull(smallCircle);
            Assert.IsNotNull(smallSquare);
            Assert.IsNotNull(smallRectangle);
            Assert.IsNotNull(circleFromRectangle);
            Assert.IsNotNull(squareFromRectangle);
        }
Example #5
0
        /// <summary>
        /// Reads the file.
        /// </summary>
        /// <param name="file">The file.</param>
        /// <returns>List of shapes.</returns>
        public List <IShape> ReadFile(string file)
        {
            List <IShape> shapes = new List <IShape>();

            using (StreamReader streamReader = new StreamReader(file))
            {
                XmlDocument document = new XmlDocument();
                document.Load(streamReader);
                XmlNode     root     = document.SelectSingleNode("/shapes");
                XmlNodeList nodeList = root.SelectNodes("*");
                foreach (XmlNode node in nodeList)
                {
                    if (node.Name.Equals("circle"))
                    {
                        Circle circle;
                        if (node.Attributes.GetNamedItem("material").Value.Equals("paper"))
                        {
                            circle = new PaperCircle(
                                double.Parse(node.Attributes.GetNamedItem("radius").Value),
                                (Color)Enum.Parse(typeof(Color), node.Attributes.GetNamedItem("color").Value));
                        }
                        else
                        {
                            circle = new MembraneCircle(double.Parse(node.Attributes.GetNamedItem("radius").Value));
                        }
                        shapes.Add(circle);
                    }
                    if (node.Name.Equals("square"))
                    {
                        Square square;
                        if (node.Attributes.GetNamedItem("material").Value.Equals("paper"))
                        {
                            square = new PaperSquare(
                                double.Parse(node.Attributes.GetNamedItem("side").Value),
                                (Color)Enum.Parse(typeof(Color), node.Attributes.GetNamedItem("color").Value));
                        }
                        else
                        {
                            square = new MembraneSquare(double.Parse(node.Attributes.GetNamedItem("side").Value));
                        }
                        shapes.Add(square);
                    }
                    if (node.Name.Equals("rectangle"))
                    {
                        Rectangle rectangle;
                        if (node.Attributes.GetNamedItem("material").Value.Equals("paper"))
                        {
                            rectangle = new PaperRectangle(
                                double.Parse(node.Attributes.GetNamedItem("firstSide").Value),
                                double.Parse(node.Attributes.GetNamedItem("secondSide").Value),
                                (Color)Enum.Parse(typeof(Color), node.Attributes.GetNamedItem("color").Value));
                        }
                        else
                        {
                            rectangle = new MembraneRectangle(
                                double.Parse(node.Attributes.GetNamedItem("firstSide").Value),
                                double.Parse(node.Attributes.GetNamedItem("secondSide").Value));
                        }
                        shapes.Add(rectangle);
                    }
                }
            }
            return(shapes);
        }