コード例 #1
0
        public void WritingByXmtTextWriterAndReadingByStreamReaderTest()
        {
            string path = @"..\..\..\..\epam_task_3.1\Res\NewPaperBox11.xml";

            FileWriter writer   = new FileWriter();
            Material   material = Material.paper;
            Box        t_box    = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new PaperRectangle(1, 1, 1, 1, Color.red);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);
            t_box[4] = new FilmRectangle(1, 1, 1, 1);
            t_box[5] = new FilmTriangle(1, 1, 1);

            writer.WriteFiguresByXmlTextWriter(t_box, material, path);

            FileReader reader = new FileReader();
            Box        r_box  = reader.ReadXmlByStreamReader(path);

            Box ex_box = new Box();

            ex_box[0] = new PaperCircle(5, Color.red);
            ex_box[1] = new PaperRectangle(1, 1, 1, 1, Color.red);
            ex_box[2] = new PaperTriangle(1, 1, 1, Color.red);

            CollectionAssert.AreEqual(ex_box.Items, r_box.Items);
        }
コード例 #2
0
ファイル: BoxTests.cs プロジェクト: pavelsch00/EPAM_Task3
        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);
        }
コード例 #3
0
        public void GetPerimeter_NewRectangle_GetPerimeter()
        {
            var actual = 75.39822368615503;

            // act
            var expected = new FilmCircle(12);

            // assert;
            Assert.Equal(expected.GetPerimeter(), actual);
        }
コード例 #4
0
        public void GetArea_NewRectangle_GetArea()
        {
            var actual = 452.3893421169302;

            // act
            var expected = new FilmCircle(12);

            // assert;
            Assert.Equal(expected.GetArea(), actual);
        }
コード例 #5
0
        public void Equals_TwoRectangle_Equals()
        {
            var actual = new FilmCircle(12);

            // act
            var expected = new FilmCircle(12);

            // assert;
            Assert.Equal(expected, actual);
        }
コード例 #6
0
        public void FilmCircle_CutFigureSmallerOriginal_PositiveTestResult(double circleRadius, double rectangleFirstSide, double rectangleSecondSide)
        {
            FilmRectangle filmRectangle = new FilmRectangle(new List <double> {
                rectangleFirstSide, rectangleSecondSide
            });
            FilmCircle expectedFilmCircle = new FilmCircle(circleRadius, filmRectangle);
            FilmCircle actualFilmCircle   = new FilmCircle(circleRadius);

            Assert.AreEqual(expectedFilmCircle, actualFilmCircle);
        }
コード例 #7
0
        public void FilmCircleCreation3()
        {
            double t_r = 5421;

            FilmCircle t_filmCircle = new FilmCircle(t_r);

            double ex_r = 5421;

            FilmCircle ex_filmCircle = new FilmCircle(ex_r);

            Assert.IsTrue(ex_filmCircle.Equals(t_filmCircle));
        }
コード例 #8
0
        public void FindFigure()
        {
            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new FilmRectangle(1, 1, 1, 1);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);
            PaperCircle ex_circle = new PaperCircle(5, Color.red);

            Assert.IsTrue(t_box.Find(ex_circle));
        }
コード例 #9
0
 /// <summary>
 /// Parses Object as a Xml Element
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="paperCircle"></param>
 public void ParseFilmCircleAsXmlNode(StreamWriter writer, FilmCircle filmCircle)
 {
     try
     {
         writer.WriteLine("\t<FilmCircle>");
         writer.WriteLine("\t\t<R>{0}</R>", filmCircle.R);
         writer.WriteLine("\t</FilmCircle>");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #10
0
 /// <summary>
 /// Parses Object as a Xml Element
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="paperCircle"></param>
 public void ParseFilmCircleAsXmlNode(XmlTextWriter writer, FilmCircle filmCircle)
 {
     try
     {
         writer.WriteStartElement(nameof(FilmCircle));
         writer.WriteElementString(nameof(FilmCircle.R), filmCircle.R.ToString());
         writer.WriteEndElement();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #11
0
        public void CreateNewFigire_NewAreaLessOldArea_CreateNewFigire()
        {
            var filmCircle = new FilmCircle(13);
            var actual     = new FilmSquare(new List <double> {
                5
            });

            // act
            var expected = new FilmSquare(filmCircle, new List <double> {
                5
            });

            // assert;
            Assert.Equal(expected, actual);
        }
コード例 #12
0
        public void GetActualBoxSize()
        {
            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new PaperRectangle(1, 1, 1, 1, Color.red);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);
            t_box[4] = new FilmRectangle(1, 1, 1, 1);
            t_box[5] = new FilmTriangle(1, 1, 1);

            int ex_size = 6;

            Assert.AreEqual(ex_size, t_box.Size);
        }
コード例 #13
0
        public void FilmTriangleIntoCircleConvertion2()
        {
            double       t_a        = 6;
            double       t_b        = 8;
            double       t_c        = 10;
            FilmTriangle t_triangle = new FilmTriangle(t_a, t_b, t_c);

            double r = 2;

            FilmCircle t_circle = new FilmCircle(r, t_triangle);

            double     ex_r      = 2;
            FilmCircle ex_circle = new FilmCircle(ex_r);

            Assert.IsTrue(ex_circle.Equals(t_circle));
        }
コード例 #14
0
ファイル: BoxTests.cs プロジェクト: pavelsch00/EPAM_Task3
        public void AddFigure_BoxIsClear_AddNewFigure()
        {
            // arrange
            var figures      = new IFigure[20];
            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);
        }
コード例 #15
0
        public void FilmTriangleIntoCircleConvertion1()
        {
            double       t_a        = 4;
            double       t_b        = 5;
            double       t_c        = 3;
            FilmTriangle t_triangle = new FilmTriangle(t_a, t_b, t_c);

            double r = 0.4;

            FilmCircle t_circle = new FilmCircle(r, t_triangle);

            double     ex_r      = 0.4;
            FilmCircle ex_circle = new FilmCircle(ex_r);

            Assert.IsTrue(ex_circle.Equals(t_circle));
        }
コード例 #16
0
        public void FilmRectangleIntoCircleConverstion3()
        {
            double t_a = 15;
            double t_b = 15;
            double t_c = 15;
            double t_d = 15;

            FilmRectangle t_rectangle = new FilmRectangle(t_a, t_b, t_c, t_d);


            double     t_r      = 3;
            FilmCircle t_circle = new FilmCircle(t_r, t_rectangle);

            double ex_r = 3;

            FilmCircle ex_circle = new FilmCircle(ex_r);

            Assert.IsTrue(ex_circle.Equals(t_circle));
        }
コード例 #17
0
        public void TakeFigure()
        {
            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new FilmRectangle(1, 1, 1, 1);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);

            Figure takenFigure = t_box.Take(2);

            Box ex_box = new Box();

            ex_box[0] = new PaperCircle(5, Color.red);
            ex_box[1] = new FilmRectangle(1, 1, 1, 1);
            ex_box[2] = new FilmCircle(5);

            CollectionAssert.AreEqual(ex_box.Items, t_box.Items);
        }
コード例 #18
0
ファイル: ReadingTests.cs プロジェクト: s3nnou/epam_task_3.1
        public void Reading4()
        {
            string path = @"..\..\..\..\epam_task_3.1\Box.xml";

            Box boxTest = new Box();

            FileReader fileExtensions = new FileReader();

            boxTest = fileExtensions.ReadXmlByXmlTextReader(path);

            Box boxToAssure = new Box();

            boxToAssure[0] = new PaperCircle(5, Color.red);
            boxToAssure[1] = new PaperCircle(1, Color.red);
            boxToAssure[2] = new PaperRectangle(1, 1, 1, 1, Color.red);
            boxToAssure[3] = new PaperTriangle(1, 1, 1, Color.red);
            boxToAssure[4] = new FilmCircle(5);

            Assert.IsTrue(boxToAssure[4].Equals(boxTest[4]));
        }
コード例 #19
0
        public void FilmCircleIntoTriangleConverstion3()
        {
            double t_r = 100;

            FilmCircle t_filmCircle = new FilmCircle(t_r);

            double t_a = 10;
            double t_b = 5;
            double t_c = 10;

            FilmTriangle t_filmTriangle = new FilmTriangle(t_a, t_b, t_c);

            double ex_a = 10;
            double ex_b = 5;
            double ex_c = 10;

            FilmTriangle ex_filmTriangle = new FilmTriangle(ex_a, ex_b, ex_c);

            Assert.IsTrue(ex_filmTriangle.Equals(t_filmTriangle));
        }
コード例 #20
0
        public void GetFilmFigures()
        {
            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new FilmRectangle(1, 1, 1, 1);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);

            List <Figure> t_circles = new List <Figure>();

            t_circles = t_box.GetFilmFigures();

            List <Figure> ex_circles = new List <Figure>
            {
                new FilmRectangle(1, 1, 1, 1),
                new FilmCircle(5)
            };

            CollectionAssert.AreEqual(ex_circles, t_circles);
        }
コード例 #21
0
        public void WritingByStreamWriterAndReadingByStreamReaderTest4()
        {
            string path = @"..\..\..\..\epam_task_3.1\Res\NewBox4.xml";

            FileWriter writer = new FileWriter();

            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new PaperRectangle(1, 1, 1, 1, Color.red);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);


            writer.WriteFiguresByStreamWriter(t_box, path);

            FileReader reader = new FileReader();
            Box        r_box  = reader.ReadXmlByStreamReader(path);

            CollectionAssert.AreEqual(t_box.Items, r_box.Items);
        }
コード例 #22
0
ファイル: BoxTests.cs プロジェクト: pavelsch00/EPAM_Task3
        public void GetFilmFIgure_FigureIsInBox_GetFilmFIgure()
        {
            // 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 FilmRectangle(new List <double> {
                4, 6
            });
            figures[3] = new FilmTriangle(new List <double> {
                3, 4, 5
            });
            figures[4] = new PaperCircle(3, Color.Green);
            figures[5] = new FilmSquare(new List <double> {
                5
            });
            figures[6] = new FilmCircle(6);

            var actualFigures = new List <IFigure>();

            actualFigures.Add(new FilmRectangle(new List <double> {
                4, 6
            }));
            actualFigures.Add(new FilmTriangle(new List <double> {
                3, 4, 5
            }));
            actualFigures.Add(new FilmSquare(new List <double> {
                5
            }));
            actualFigures.Add(new FilmCircle(6));
            var expected = new Box(figures);

            // assert;
            Assert.Equal(expected.GetAllFilmFigures(), actualFigures);
        }
コード例 #23
0
        public void FilmCircleIntoRectangleConverstion2()
        {
            double t_r = 25;

            FilmCircle t_filmCircle = new FilmCircle(t_r);

            double t_a = 1;
            double t_b = 4;
            double t_c = 1;
            double t_d = 4;

            FilmRectangle t_filmRectangle = new FilmRectangle(t_a, t_b, t_c, t_d);

            double ex_a = 1;
            double ex_b = 4;
            double ex_c = 1;
            double ex_d = 4;

            FilmRectangle ex_filmRectangle = new FilmRectangle(ex_a, ex_b, ex_c, ex_d);

            Assert.IsTrue(ex_filmRectangle.Equals(t_filmRectangle));
        }
コード例 #24
0
        public void SetFigure()
        {
            Box t_box = new Box();

            t_box[0] = new PaperCircle(5, Color.red);
            t_box[1] = new FilmRectangle(1, 1, 1, 1);
            t_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            t_box[3] = new FilmCircle(5);

            FilmTriangle ex_circle = new FilmTriangle(1, 1, 1);

            t_box.Set(1, ex_circle);

            Box ex_box = new Box();

            ex_box[0] = new PaperCircle(5, Color.red);
            ex_box[1] = new FilmTriangle(1, 1, 1);
            ex_box[2] = new PaperTriangle(1, 1, 1, Color.red);
            ex_box[3] = new FilmCircle(5);

            CollectionAssert.AreEqual(ex_box.Items, t_box.Items);
        }
コード例 #25
0
ファイル: BoxTests.cs プロジェクト: pavelsch00/EPAM_Task3
        public void ShowByNumber_FigureIsInBox_ShowFigure()
        {
            // arrange
            var figures = new IFigure[20];

            figures[0] = new FilmRectangle(new List <double> {
                4, 6
            });
            figures[1] = new FilmTriangle(new List <double> {
                3, 4, 5
            });
            figures[2] = new FilmCircle(3);
            figures[3] = new FilmSquare(new List <double> {
                5
            });
            var actualResult = figures[1];
            var expectedBox  = new Box(figures);

            // act
            var expected = expectedBox.ShowByNumber(1);

            // assert;
            Assert.Equal(expected, actualResult);
        }
コード例 #26
0
        public void GetArea_PositiveTestResult(double circleRadius, double expectedArea)
        {
            FilmCircle filmCircle = new FilmCircle(circleRadius);

            Assert.AreEqual(expectedArea, filmCircle.GetArea());
        }
コード例 #27
0
        /// <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);
        }
コード例 #28
0
        public void FilmCircle_CutFigureBiggerOriginal_OutOfAreaException(double firstCircleRadius, double secondCircleRadius)
        {
            FilmCircle filmCircle = new FilmCircle(firstCircleRadius);

            Assert.ThrowsException <OutOfAreaException>(() => new FilmCircle(secondCircleRadius, filmCircle));
        }
コード例 #29
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);
        }
コード例 #30
0
        public void GetPerimeter_PositiveTestResult(double circleRadius, double expectedPerimter)
        {
            FilmCircle filmCircle = new FilmCircle(circleRadius);

            Assert.AreEqual(expectedPerimter, filmCircle.GetPerimeter());
        }