Пример #1
0
        public void GetByNumber_FigureIsInBox_GetByNumberAndRemoveInBox()
        {
            // arrange
            var figures = new IFigure[20];

            figures[0] = new PaperRectangle(new List <double> {
                4, 6
            }, Color.Black);
            figures[1] = new PaperTriangle(new List <double> {
                3, 4, 5
            }, Color.Red);
            figures[2] = new PaperCircle(3, Color.Green);
            figures[3] = new PaperSquare(new List <double> {
                5
            }, Color.Green);

            var actualResult = 3;
            var expectedBox  = new Box(figures);

            // act
            expectedBox.GetByNumber(3);

            // assert;
            Assert.Equal(expectedBox.ShowCountFigures(), actualResult);
        }
Пример #2
0
        public void GetAllCircle_FigureIsInBox_GetAllCircle()
        {
            // arrange
            var figures = new IFigure[20];

            figures[0] = new PaperRectangle(new List <double> {
                4, 6
            }, Color.Black);
            figures[1] = new PaperTriangle(new List <double> {
                3, 4, 5
            }, Color.Red);
            figures[2] = new PaperCircle(3, Color.Green);
            figures[3] = new PaperSquare(new List <double> {
                5
            }, Color.Green);
            figures[4] = new FilmCircle(6);

            var actualFigures = new List <IFigure>();

            actualFigures.Add(new PaperCircle(3, Color.Green));
            actualFigures.Add(new FilmCircle(6));

            var expected = new Box(figures);

            // assert;
            Assert.Equal(expected.GetAllCircle(), actualFigures);
        }
Пример #3
0
        public void SaveFiguresToXmlFileUsingXmlWriterAndGetFiguresFromXmlFileUsingXmlReader_FigureIsInBox_GetFIgure()
        {
            // arrange
            string path    = @"..\..\..\Figures.xml";
            var    figures = new IFigure[20];

            figures[0] = new PaperCircle(5, Color.Red);
            figures[1] = new FilmRectangle(new List <double> {
                11, 18
            });
            figures[2] = new PaperSquare(new List <double> {
                8
            }, Color.Green);
            figures[3] = new FilmTriangle(new List <double> {
                9, 11, 4
            });

            var actualBox = new Box(figures);

            actualBox.SaveFiguresToXmlFileUsingXmlWriter(path);

            var expected = new Box();

            expected.GetFiguresFromXmlFileUsingXmlReader(path);
            // assert;
            Assert.Equal(expected, actualBox);
        }
Пример #4
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);
        }
Пример #5
0
        public void AddFigure_FigureIsInBox_AddNewFigure()
        {
            // arrange
            var figures = new IFigure[20];

            figures[0] = new PaperRectangle(new List <double> {
                4, 6
            }, Color.Black);
            figures[1] = new PaperTriangle(new List <double> {
                3, 4, 5
            }, Color.Red);
            figures[2] = new PaperCircle(3, Color.Green);
            figures[3] = new PaperSquare(new List <double> {
                5
            }, Color.Green);
            var figure       = new FilmCircle(6);
            var actualResult = new Box(figures);

            actualResult.AddFigure(figure);
            var expected = new Box(figures);

            // act
            expected.AddFigure(figure);

            // assert;
            Assert.Equal(expected, actualResult);
        }
        public void GetPerimeter_PositiveTestResult(double squareSide, Colors color, double expectedPerimeter)
        {
            PaperSquare actualPaperSquare = new PaperSquare(new List <double> {
                squareSide
            }, color);

            Assert.AreEqual(expectedPerimeter, actualPaperSquare.GetPerimeter());
        }
Пример #7
0
        public void TestGetPerimeterOfSquare(double side, double expectedArea)
        {
            Square paperSquare    = new PaperSquare(side);
            Square membraneSquare = new MembraneSquare(side);

            Assert.AreEqual(expectedArea, paperSquare.GetPerimeter());
            Assert.AreEqual(expectedArea, membraneSquare.GetPerimeter());
        }
Пример #8
0
        public void CreatingSquareMustReturnObject(double side)
        {
            Square paperSquare    = new PaperSquare(side);
            Square membraneSquare = new MembraneSquare(side);

            Assert.IsNotNull(paperSquare);
            Assert.IsNotNull(membraneSquare);
        }
        public void PaintOverFigure_IsPaintedException(double squareSide, Colors actualColor, Colors newFirstColor, Colors newSecondColor)
        {
            PaperSquare actualPaperSquare = new PaperSquare(new List <double> {
                squareSide
            }, actualColor);

            actualPaperSquare.PaintOverFigure(newFirstColor);
            Assert.ThrowsException <IsPaintedException>(() => actualPaperSquare.PaintOverFigure(newSecondColor));
        }
        public void PaintOverFigure_PositiveTestResult(double squareSide, Colors actualColor, Colors newColor, Colors expectedColor)
        {
            PaperSquare actualPaperSquare = new PaperSquare(new List <double> {
                squareSide
            }, actualColor);

            actualPaperSquare.PaintOverFigure(newColor);
            Assert.AreEqual(expectedColor, actualPaperSquare.Color);
        }
        public void PaperRectangle_CutFigureBiggerOriginal_OutOfAreaException(double firstSquareSide, Colors color, double secondSquareSide)
        {
            PaperSquare actualPaperSquare = new PaperSquare(new List <double> {
                firstSquareSide
            }, color);

            Assert.ThrowsException <OutOfAreaException>(() => new PaperSquare(new List <double> {
                secondSquareSide
            }, actualPaperSquare));
        }
Пример #12
0
        public void TestPaintNonePaperShapes(double radius, double squareSide, double rectangleFirstSide, double rectangleSecondSide, Color color)
        {
            PaperCircle    paperCircle    = new PaperCircle(radius);
            PaperRectangle paperRectangle = new PaperRectangle(rectangleFirstSide, rectangleSecondSide);
            PaperSquare    paperSquare    = new PaperSquare(squareSide);

            Assert.ThrowsException <UnableToPaintException>(() => paperCircle.Paint(color));
            Assert.ThrowsException <UnableToPaintException>(() => paperSquare.Paint(color));
            Assert.ThrowsException <UnableToPaintException>(() => paperRectangle.Paint(color));
        }
Пример #13
0
        public void GetArea_NewRectangle_GetArea()
        {
            var actual = 144;

            // act
            var expected = new PaperSquare(new List <double> {
                12
            }, Color.Black);

            // assert;
            Assert.Equal(expected.GetArea(), actual);
        }
Пример #14
0
        public void TestPaintPaperShapes(double radius, double squareSide, double rectangleFirstSide, double rectangleSecondSide, Color color)
        {
            PaperCircle    paperCircle    = new PaperCircle(radius);
            PaperRectangle paperRectangle = new PaperRectangle(rectangleFirstSide, rectangleSecondSide);
            PaperSquare    paperSquare    = new PaperSquare(squareSide);

            paperCircle.Paint(color);
            paperSquare.Paint(color);
            paperRectangle.Paint(color);

            Assert.AreEqual(color, paperCircle.GetColor());
            Assert.AreEqual(color, paperSquare.GetColor());
            Assert.AreEqual(color, paperRectangle.GetColor());
        }
        public void PaperSquare_CutFigureSmallerOriginal_PositiveTestResult(double rectFirstSide, double rectSecondSide, Colors color, double squareSide)
        {
            PaperRectangle PaperRectangle = new PaperRectangle(new List <double> {
                rectFirstSide, rectSecondSide
            }, color);
            PaperSquare expectedPaperSquare = new PaperSquare(new List <double> {
                squareSide
            }, PaperRectangle);
            PaperSquare actualPaperSquare = new PaperSquare(new List <double> {
                squareSide
            }, color);

            Assert.AreEqual(expectedPaperSquare, actualPaperSquare);
        }
Пример #16
0
        public void Equals_TwoRectangle_Equals()
        {
            var actual = new PaperSquare(new List <double> {
                12
            }, Color.Green);

            // act
            var expected = new PaperSquare(new List <double> {
                12
            }, Color.Green);

            // assert;
            Assert.Equal(expected, actual);
        }
Пример #17
0
        public void СhangeСolor_NewColor_СhangeСolor()
        {
            var expected = new PaperSquare(new List <double> {
                12
            }, Color.Black);

            expected.СhangeСolor(Color.Green);
            // act
            var actual = new PaperSquare(new List <double> {
                12
            }, Color.Green);

            // assert;
            Assert.Equal(expected, actual);
        }
Пример #18
0
        public void CreateNewFigire_NewAreaLessOldArea_CreateNewFigire()
        {
            var paperCircle = new PaperCircle(13, Color.Black);
            var actual      = new PaperSquare(new List <double> {
                5
            }, Color.Black);

            // act
            var expected = new PaperSquare(paperCircle, new List <double> {
                5
            }, paperCircle.Color);

            // assert;
            Assert.Equal(expected, actual);
        }
Пример #19
0
        public void TestGetAllCirclesFromBox(double radius, double newRadius, double side, int numberOfCircles)
        {
            Box    box          = new Box();
            Circle firstCircle  = new MembraneCircle(radius);
            Circle secondCircle = new PaperCircle(newRadius);
            Square square       = new PaperSquare(side);

            Assert.AreEqual(0, box.GetAllCircles().Count);

            box.AddShape(firstCircle);
            box.AddShape(secondCircle);
            box.AddShape(square);

            Assert.IsTrue(new List <Circle>()
            {
                firstCircle, secondCircle
            }.SequenceEqual(box.GetAllCircles()));
            Assert.AreEqual(numberOfCircles, box.GetAllCircles().Count);
        }
        /// <summary>
        /// Method reads figures from an xml file using StreamReader.
        /// </summary>
        /// <param name="path">path</param>
        /// <returns>IFigure[]</returns>
        public static IFigure[] GetFromFile(string path)
        {
            var figures = new IFigure[_sizeArray];
            var sides   = new List <double>();

            object color      = null;
            string material   = null;
            string figureName = null;
            string content    = null;

            double radius = 0;
            int    count  = 0;

            string patternMaterial = @"(Paper|Film)([A-z]*)";
            string patternNumber   = @"(\d+|\d.+)\<";
            string patternColor    = @">([A-z]*)<";
            var    regex           = new Regex(patternMaterial);

            using (var streamReader = new StreamReader(path))
            {
                while ((content = streamReader.ReadLine()) != null)
                {
                    if (!Enum.TryParse(typeof(FigureType), content.Trim('<', '>', '/', '\t', ' '), out object figureType))
                    {
                        continue;
                    }

                    regex = new Regex(patternMaterial);
                    foreach (Match match in regex.Matches(figureType.ToString()))
                    {
                        material   = match.Groups[1].Value;
                        figureName = match.Groups[2].Value;
                    }

                    content = streamReader.ReadLine();
                    regex   = new Regex(patternNumber);

                    if (figureName != _circleFigure)
                    {
                        foreach (Match match in regex.Matches(content))
                        {
                            sides = match.Groups[1].Value.Split(' ').Select(obj => double.Parse(obj)).ToList();
                        }
                    }
                    else
                    {
                        foreach (Match match in regex.Matches(content))
                        {
                            double.TryParse(match.Groups[1].Value, out radius);
                        }
                    }

                    if (material == _paperMaterial)
                    {
                        content = streamReader.ReadLine();
                        regex   = new Regex(patternColor);
                        foreach (Match match in regex.Matches(content))
                        {
                            color = Enum.Parse(typeof(Color), match.Groups[1].Value);
                        }
                    }

                    switch (figureType)
                    {
                    case FigureType.PaperCircle:
                        figures[count] = new PaperCircle(radius, (Color)color);
                        break;

                    case FigureType.PaperRectangle:
                        figures[count] = new PaperRectangle(sides, (Color)color);
                        break;

                    case FigureType.PaperSquare:
                        figures[count] = new PaperSquare(sides, (Color)color);
                        break;

                    case FigureType.PaperTriangle:
                        figures[count] = new PaperTriangle(sides, (Color)color);
                        break;

                    case FigureType.FilmCircle:
                        figures[count] = new FilmCircle(radius);
                        break;

                    case FigureType.FilmRectangle:
                        figures[count] = new FilmRectangle(sides);
                        break;

                    case FigureType.FilmSquare:
                        figures[count] = new FilmSquare(sides);
                        break;

                    case FigureType.FilmTriangle:
                        figures[count] = new FilmTriangle(sides);
                        break;

                    default:
                        break;
                    }
                    count++;
                    if (count == figures.Length - 1)
                    {
                        return(figures);
                    }
                    content = streamReader.ReadLine();
                }
            }

            return(figures);
        }
Пример #21
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);
        }
Пример #22
0
        /// <summary>
        /// Method reads figures from an xml file using XmlReader.
        /// </summary>
        /// <param name="path">path</param>
        /// <returns>IFigure[]</returns>
        public static IFigure[] GetFromFile(string path)
        {
            var figures = new IFigure[_sizeArray];
            var sides   = new List <double>();

            using var xmlReader = new XmlTextReader(path);
            object color      = null;
            string material   = null;
            string figureName = null;

            double radius = 0;
            int    count  = 0;

            string patternMaterial = @"(Paper|Film)([A-z]*)";
            string patternNumber   = @"(\d+|\d.+)\<";

            var regex = new Regex(patternNumber);

            while (xmlReader.Read())
            {
                if (!Enum.TryParse(typeof(FigureType), xmlReader.Name, out object figureType))
                {
                    continue;
                }

                regex = new Regex(patternMaterial);
                foreach (Match match in regex.Matches(figureType.ToString()))
                {
                    material   = match.Groups[1].Value;
                    figureName = match.Groups[2].Value;
                }

                xmlReader.Read();
                xmlReader.Read();

                if (figureName != _circleFigure)
                {
                    sides = new List <double>();

                    if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == nameof(IPolygonFigure.Sides)))
                    {
                        sides = xmlReader.ReadElementString().Split(' ').Select(obj => double.Parse(obj)).ToList();
                    }
                }
                else
                if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == nameof(ICircle.Radius)))
                {
                    radius = double.Parse(xmlReader.ReadElementString());
                }

                if (material == _paperMaterial)
                {
                    xmlReader.Read();

                    if ((xmlReader.NodeType == XmlNodeType.Element) && (xmlReader.Name == nameof(IPaper.Color)))
                    {
                        color = Enum.Parse(typeof(Color), xmlReader.ReadElementString());
                    }
                }

                switch (figureType)
                {
                case FigureType.PaperCircle:
                    figures[count] = new PaperCircle(radius, (Color)color);
                    break;

                case FigureType.PaperRectangle:
                    figures[count] = new PaperRectangle(sides, (Color)color);
                    break;

                case FigureType.PaperSquare:
                    figures[count] = new PaperSquare(sides, (Color)color);
                    break;

                case FigureType.PaperTriangle:
                    figures[count] = new PaperTriangle(sides, (Color)color);
                    break;

                case FigureType.FilmCircle:
                    figures[count] = new FilmCircle(radius);
                    break;

                case FigureType.FilmRectangle:
                    figures[count] = new FilmRectangle(sides);
                    break;

                case FigureType.FilmSquare:
                    figures[count] = new FilmSquare(sides);
                    break;

                case FigureType.FilmTriangle:
                    figures[count] = new FilmTriangle(sides);
                    break;
                }
                count++;
                if (count == figures.Length - 1)
                {
                    return(figures);
                }
                xmlReader.Read();
            }

            return(figures);
        }