예제 #1
0
        public void FilmTriangleIntoRectangleConvertion2()
        {
            double       t_a        = 65;
            double       t_b        = 64;
            double       t_c        = 63;
            Color        t_color    = Color.red;
            FilmTriangle t_triangle = new FilmTriangle(t_a, t_b, t_c);

            double t_a1 = 1;
            double t_b1 = 2;
            double t_c1 = 1;
            double t_d1 = 2;

            FilmRectangle t_rectangle = new FilmRectangle(t_a1, t_b1, t_c1, t_d1, t_triangle);

            double        ex_a         = 1;
            double        ex_b         = 2;
            double        ex_c         = 1;
            double        ex_d         = 2;
            Color         ex_color     = Color.red;
            FilmRectangle ex_rectangle = new FilmRectangle(ex_a, ex_b, ex_c, ex_d);


            Assert.IsTrue(ex_rectangle.Equals(t_rectangle));
        }
예제 #2
0
        public void WritingByXmtTextWriterAndReadingByStreamReaderTest()
        {
            string path = @"..\..\..\..\epam_task_3.1\Res\NewPaperBox11.xml";

            FileWriter writer   = new FileWriter();
            Material   material = Material.film;

            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 FilmCircle(5);
            ex_box[1] = new FilmRectangle(1, 1, 1, 1);
            ex_box[2] = new FilmTriangle(1, 1, 1);

            CollectionAssert.AreEqual(ex_box.Items, r_box.Items);
        }
예제 #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
        public void AddFigureToFullBox()
        {
            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);
            t_box[6]  = new PaperCircle(3, Color.red);
            t_box[7]  = new PaperRectangle(2, 1, 2, 1, Color.red);
            t_box[8]  = new PaperTriangle(2, 2, 2, Color.red);
            t_box[9]  = new FilmCircle(6);
            t_box[10] = new FilmRectangle(7, 7, 7, 7);
            t_box[11] = new FilmTriangle(5, 5, 5);
            t_box[12] = new PaperCircle(1, Color.blue);
            t_box[13] = new PaperRectangle(1, 1, 1, 1, Color.green);
            t_box[14] = new PaperTriangle(1, 1, 1, Color.blue);
            t_box[15] = new FilmCircle(6);
            t_box[16] = new FilmRectangle(10, 10, 10, 10);
            t_box[17] = new FilmTriangle(3, 4, 5);
            t_box[18] = new PaperCircle(13, Color.red);
            t_box[19] = new PaperRectangle(9, 1, 9, 1, Color.red);

            double      t_r      = 15;
            Color       t_color  = Color.green;
            PaperCircle t_circle = new PaperCircle(t_r, t_color);

            t_box.Add(t_circle);
        }
        public void GetPerimeter_PositiveTestResult(double triangleFirstSide, double triangleSecondSide, double triangleThirdSide, double expectedPerimeter)
        {
            FilmTriangle actualFilmTriangle = new FilmTriangle(new List <double> {
                triangleFirstSide, triangleSecondSide, triangleThirdSide
            });

            Assert.AreEqual(expectedPerimeter, actualFilmTriangle.GetPerimeter());
        }
        public void FilmRectangle_CutFigureBiggerOriginal_OutOfAreaException(double firstTriangleFirstSide, double firstTriangleSecondSide, double firstTriangleThirdSide, double secondTriangleFirstSide, double secondTriangleSecondSide, double secondTriangleThirdSide)
        {
            FilmTriangle actualFilmTriangle = new FilmTriangle(new List <double> {
                firstTriangleFirstSide, firstTriangleSecondSide, firstTriangleThirdSide
            });

            Assert.ThrowsException <OutOfAreaException>(() => new FilmTriangle(new List <double> {
                secondTriangleFirstSide, secondTriangleSecondSide, secondTriangleThirdSide
            }, actualFilmTriangle));
        }
예제 #7
0
        public void GetPerimeter_NewRectangle_GetPerimeter()
        {
            var actual = 11;

            // act
            var expected = new FilmTriangle(new List <double> {
                2, 4, 5
            });

            // assert;
            Assert.Equal(expected.GetPerimeter(), actual);
        }
예제 #8
0
        public void GetArea_NewRectangle_GetArea()
        {
            var actual = 3.799671038392666;

            // act
            var expected = new FilmTriangle(new List <double> {
                2, 4, 5
            });

            // assert;
            Assert.Equal(expected.GetArea(), actual);
        }
예제 #9
0
        public void Equals_TwoRectangle_Equals()
        {
            var actual = new FilmTriangle(new List <double> {
                2, 4, 5
            });

            // act
            var expected = new FilmTriangle(new List <double> {
                2, 4, 5
            });

            // assert;
            Assert.Equal(expected, actual);
        }
        public void FilmTriangle_CutFigureSmallerOriginal_PositiveTestResult(double rectangleFirstSide, double rectangleSecondSide, double triangleFirstSide, double triangleSecondSide, double triangleThirdSide)
        {
            FilmRectangle filmRectangle = new FilmRectangle(new List <double> {
                rectangleFirstSide, rectangleSecondSide
            });
            FilmTriangle expectedFilmTriangle = new FilmTriangle(new List <double> {
                triangleFirstSide, triangleSecondSide, triangleThirdSide
            }, filmRectangle);
            FilmTriangle actualFilmTriangle = new FilmTriangle(new List <double> {
                triangleFirstSide, triangleSecondSide, triangleThirdSide
            });

            Assert.AreEqual(expectedFilmTriangle, actualFilmTriangle);
        }
예제 #11
0
        public void FilmTriangleCreation3()
        {
            double       t_a        = 6;
            double       t_b        = 8;
            double       t_c        = 10;
            FilmTriangle t_triangle = new FilmTriangle(t_a, t_b, t_c);


            double       ex_a        = 6;
            double       ex_b        = 8;
            double       ex_c        = 10;
            FilmTriangle ex_triangle = new FilmTriangle(ex_a, ex_b, ex_c);

            Assert.IsTrue(ex_triangle.Equals(t_triangle));
        }
예제 #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
 /// <summary>
 /// Parses Object as a Xml Element
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="paperCircle"></param>
 public void ParseFilmTriangleAsXmlNode(XmlTextWriter writer, FilmTriangle filmTriangle)
 {
     try
     {
         writer.WriteStartElement(nameof(FilmTriangle));
         writer.WriteElementString(nameof(FilmTriangle.A), filmTriangle.A.ToString());
         writer.WriteElementString(nameof(FilmTriangle.B), filmTriangle.B.ToString());
         writer.WriteElementString(nameof(FilmTriangle.C), filmTriangle.C.ToString());
         writer.WriteEndElement();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary>
 /// Parses Object as a Xml Element
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="paperCircle"></param>
 public void ParseFilmTriangleAsXmlNode(StreamWriter writer, FilmTriangle filmTriangle)
 {
     try
     {
         writer.WriteLine("\t<FilmTriangle>");
         writer.WriteLine("\t\t<A>{0}</A>", filmTriangle.A);
         writer.WriteLine("\t\t<B>{0}</B>", filmTriangle.B);
         writer.WriteLine("\t\t<C>{0}</C>", filmTriangle.C);
         writer.WriteLine("\t</FilmTriangle>");
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #15
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));
        }
예제 #16
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));
        }
예제 #17
0
        public void CreateNewFigire_NewAreaLessOldArea_CreateNewFigire()
        {
            var paperTriangle = new FilmTriangle(new List <double> {
                12, 14, 15
            });
            var actual = new FilmSquare(new List <double> {
                5
            });

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

            // assert;
            Assert.Equal(expected, actual);
        }
예제 #18
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));
        }
예제 #19
0
        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);
        }
예제 #20
0
        public void FilmTriangleIntoRectangleConvertion3()
        {
            double       t_a        = 10;
            double       t_b        = 10;
            double       t_c        = 10;
            FilmTriangle t_triangle = new FilmTriangle(t_a, t_b, t_c);

            double t_a1 = 2;
            double t_b1 = 5;
            double t_c1 = 2;
            double t_d1 = 5;

            FilmRectangle t_rectangle = new FilmRectangle(t_a1, t_b1, t_c1, t_d1, t_triangle);

            double        ex_a         = 2;
            double        ex_b         = 5;
            double        ex_c         = 2;
            double        ex_d         = 5;
            FilmRectangle ex_rectangle = new FilmRectangle(ex_a, ex_b, ex_c, ex_d);

            Assert.IsTrue(ex_rectangle.Equals(t_rectangle));
        }
예제 #21
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);
        }
예제 #22
0
        public void FilmRectangleIntoTriangleConverstion3()
        {
            double t_a = 30;
            double t_b = 150;
            double t_c = 30;
            double t_d = 150;

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


            double       t_a1       = 2;
            double       t_b1       = 2;
            double       t_c1       = 2;
            FilmTriangle t_triangle = new FilmTriangle(t_a1, t_b1, t_c1, t_rectangle);

            double       ex_a        = 2;
            double       ex_b        = 2;
            double       ex_c        = 2;
            FilmTriangle ex_triangle = new FilmTriangle(ex_a, ex_b, ex_c);

            Assert.IsTrue(ex_triangle.Equals(t_triangle));
        }
예제 #23
0
        public void Reading13()
        {
            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);
            boxToAssure[5] = new FilmRectangle(1, 1, 1, 1);
            boxToAssure[6] = new FilmTriangle(1, 1, 1);

            Assert.IsTrue(boxToAssure[6].Equals(boxTest[6]));
        }
예제 #24
0
        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);
        }
        /// <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);
        }
예제 #26
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);
        }