예제 #1
0
 public void CirclePaperOldAreaLessNewAreaGetArgumentException()
 {
     var paperRectangle = new RectanglePaper(new List <double> {
         4, 6
     }, Color.Black);
     var result = new CirclePaper(5, paperRectangle);
 }
예제 #2
0
 public void PaperCircleWhenOldAreaLessNewAreaGetArgumentException()
 {
     var paperCircle = new CirclePaper(7, Color.Red);
     var result      = new RectanglePaper(new List <double> {
         14, 17
     }, paperCircle);
 }
예제 #3
0
 /// <summary>
 /// parses the paper rectangle into the xml element.
 /// </summary>
 /// <param name="streamWriter"></param>
 /// <param name="paperRectangle">Paper rectangle</param>
 public static void ParseXmlPaperRectangle(StreamWriter streamWriter, RectanglePaper paperRectangle)
 {
     streamWriter.WriteLine($"\t<{nameof(RectanglePaper)}>");
     streamWriter.WriteLine($"\t\t<{nameof(RectanglePaper.Sides)}>{string.Join(' ', paperRectangle.Sides)}</{nameof(RectanglePaper.Sides)}>");
     streamWriter.WriteLine($"\t\t<{nameof(RectanglePaper.Color)}>{paperRectangle.Color}</{nameof(RectanglePaper.Color)}>");
     streamWriter.WriteLine($"\t</{nameof(RectanglePaper)}>");
 }
예제 #4
0
        public void CirclePaperOldAreaMoreNewAreaCreatePaperCircle()
        {
            var paperRectangle = new RectanglePaper(new List <double> {
                19, 14
            }, Color.Pink);
            var result       = new CirclePaper(4, paperRectangle);
            var actualResult = new CirclePaper(4, Color.Pink);

            Assert.AreEqual(result, actualResult);
        }
예제 #5
0
        public void RecolorFigureWhenFigureIsRecolorNotForFirstTimeGetArgumentException()
        {
            var sidesList = new List <double> {
                7, 17
            };
            var rectangle = new RectanglePaper(sidesList, Color.Red);

            rectangle.RecolorFigure(Color.Green);
            rectangle.RecolorFigure(Color.Black);
        }
예제 #6
0
        /// <summary>
        /// The method reads data from a file using StreamReader and returns a list of generalFigure.
        /// </summary>
        /// <returns>Figure list</returns>
        public static List <IFigure> ReadFiguresStreamReader(string way)
        {
            using (var streamReader = new StreamReader(way))
            {
                var    generalFigure = new List <IFigure>();
                string line;

                while ((line = streamReader.ReadLine()) != null)
                {
                    string elementContent = line.Trim('<', '>', '/', '\t', ' ');

                    if (!Enum.TryParse(typeof(TypeFigure), elementContent, out object typeFigure))
                    {
                        continue;
                    }

                    switch (typeFigure)
                    {
                    case TypeFigure.CirclePaper:
                        CirclePaper paperCircle = ParserFiguresUsingStream.ParsePaperCircleXmlElement(streamReader);
                        generalFigure.Add(paperCircle);
                        break;

                    case TypeFigure.RectanglePaper:
                        RectanglePaper paperRectangle = ParserFiguresUsingStream.ParsePaperRectXmlElement(streamReader);
                        generalFigure.Add(paperRectangle);
                        break;

                    case TypeFigure.TrianglePaper:
                        TrianglePaper paperTriangle = ParserFiguresUsingStream.ParsePaperTriXmlElement(streamReader);
                        generalFigure.Add(paperTriangle);
                        break;

                    case TypeFigure.CirclePellicle:
                        CirclePellicle skinCircle = ParserFiguresUsingStream.ParsePellicleCircleXmlElement(streamReader);
                        generalFigure.Add(skinCircle);
                        break;

                    case TypeFigure.RectanglePellicle:
                        RectanglePellicle skinRectangle = ParserFiguresUsingStream.ParsePellicleRectangleFXmlElement(streamReader);
                        generalFigure.Add(skinRectangle);
                        break;

                    case TypeFigure.TrianglePellicle:
                        TrianglePellicle skinTriangle = ParserFiguresUsingStream.ParsePellicleTriXmlElement(streamReader);
                        generalFigure.Add(skinTriangle);
                        break;
                    }

                    streamReader.ReadLine();
                }

                return(generalFigure);
            }
        }
예제 #7
0
        public void TestGetPerimeter()
        {
            var sidesList = new List <double> {
                7, 14
            };
            var    rectangle    = new RectanglePaper(sidesList, Color.Red);
            double result       = rectangle.GetPerimeter();
            double actualResult = 21;

            Assert.AreEqual(result, actualResult, 0.0000001);
        }
예제 #8
0
        public void TestGetArea()
        {
            var sidesList = new List <double> {
                6, 8, 6, 8
            };
            var    rectangle    = new RectanglePaper(sidesList, Color.Red);
            double result       = rectangle.GetArea();
            double actualResult = 48;

            Assert.AreEqual(result, actualResult, 0.0000001);
        }
예제 #9
0
        public void PaperRectangleWhenOldAreaMoreNewAreaCreatePaperCircle()
        {
            var paperCircle = new CirclePaper(6, Color.Red);
            var result      = new RectanglePaper(new List <double> {
                3, 5
            }, paperCircle);
            var actualResult = new RectanglePaper(new List <double> {
                3, 5
            }, Color.Red);

            Assert.AreEqual(result, actualResult);
        }
예제 #10
0
        public static List <IFigure> ReadFiguresXmlReader(string way)
        {
            using (var xmlReader = new XmlTextReader(way))
            {
                var generalFigure = new List <IFigure>();

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

                    switch (typeFigure)
                    {
                    case TypeFigure.CirclePaper:
                        CirclePaper paperCircle = ParserFigureUsingXML.ParsePaperCircleXmlElement(xmlReader);
                        generalFigure.Add(paperCircle);
                        break;

                    case TypeFigure.RectanglePaper:
                        RectanglePaper paperRectangle = ParserFigureUsingXML.ParsePaperRectangleXmlElement(xmlReader);
                        generalFigure.Add(paperRectangle);
                        break;

                    case TypeFigure.TrianglePaper:
                        TrianglePaper paperTriangle = ParserFigureUsingXML.ParsePaperTriangleXmlElement(xmlReader);
                        generalFigure.Add(paperTriangle);
                        break;

                    case TypeFigure.CirclePellicle:
                        CirclePellicle skinCircle = ParserFigureUsingXML.ParsePellicleCircleXmlElement(xmlReader);
                        generalFigure.Add(skinCircle);
                        break;

                    case TypeFigure.RectanglePellicle:
                        RectanglePellicle skinRectangle = ParserFigureUsingXML.ParsePellicleRectangleXmlElement(xmlReader);
                        generalFigure.Add(skinRectangle);
                        break;

                    case TypeFigure.TrianglePellicle:
                        TrianglePellicle skinTriangle = ParserFigureUsingXML.ParsePellicleTriangleXmlElement(xmlReader);
                        generalFigure.Add(skinTriangle);
                        break;
                    }

                    xmlReader.Read();
                }

                return(generalFigure);
            }
        }
예제 #11
0
        public void RecolorFigureWhenFigureIsRecolorForFirstTimeNewColor()
        {
            var sidesList = new List <double> {
                7, 9
            };
            var rectangle = new RectanglePaper(sidesList, Color.Red);

            rectangle.RecolorFigure(Color.Green);
            Color result       = rectangle.Color;
            Color actualResult = Color.Green;

            Assert.AreEqual(result, actualResult);
        }
예제 #12
0
        /// <summary>
        /// Сreating a specific figure
        /// </summary>
        /// <param name="material"> Material type</param>
        /// <param name="values"> Figure's data</param>
        /// <returns></returns>
        public IFigure CreateFigure(Material material, params double[] values)
        {
            IFigure figure = null;

            switch (material)
            {
            case Material.Paper:
                switch (values.Length)
                {
                case 1:
                    figure = new CirclePaper(values[0]);
                    break;

                case 2:
                    figure = new RectanglePaper(values[0], values[1]);
                    break;

                case 3:
                    figure = new TrianglePaper(values[0], values[1], values[2]);
                    break;

                default:
                    throw new InvalidParametersException();
                }
                break;

            case Material.Film:
                switch (values.Length)
                {
                case 1:
                    figure = new CircleFilm(values[0]);
                    break;

                case 2:
                    figure = new RectangleFilm(values[0], values[1]);
                    break;

                case 3:
                    figure = new TriangleFilm(values[0], values[1], values[2]);
                    break;

                default:
                    throw new InvalidParametersException();
                }
                break;

            default:
                throw new InvalidParametersException();
            }
            return(figure);
        }
        /// <summary>
        /// Method for create cuttting figures
        /// </summary>
        /// <param name="figure"></param>
        /// <param name="values"></param>
        /// <returns></returns>
        public IFigure CreateFigure(IFigure figure, params double[] values)
        {
            IFigure newFigure = null;

            if (figure is Paper)
            {
                switch (values.Length)
                {
                case 1:
                    figure = new CirclePaper(figure, values[0]);
                    break;

                case 2:
                    figure = new RectanglePaper(figure, values[0], values[1]);
                    break;

                case 3:
                    figure = new TrianglePaper(figure, values[0], values[1], values[2]);
                    break;

                default:
                    throw new InvalidParametersException();
                }
            }
            else if (figure is Film)
            {
                switch (values.Length)
                {
                case 1:
                    figure = new CircleFilm(figure, values[0]);
                    break;

                case 2:
                    figure = new RectangleFilm(figure, values[0], values[1]);
                    break;

                case 3:
                    figure = new TriangleFilm(figure, values[0], values[1], values[2]);
                    break;

                default:
                    throw new InvalidParametersException();
                }
            }
            return(newFigure);
        }
예제 #14
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);
        }
예제 #15
0
        /// <summary>
        /// Method Write
        /// </summary>
        /// <param name="intoBox">Input List</param>
        public void Write(string output, List <IFigure> intoBox)
        {
            XmlWriter xmlWriter = XmlWriter.Create(output);

            xmlWriter.WriteStartDocument();
            xmlWriter.WriteStartElement("Boxs");
            foreach (var i in intoBox)
            {
                switch (i.GetType().Name)
                {
                case "CircleFilm":
                {
                    CircleFilm c1 = (CircleFilm)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Circle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Film");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("None");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("diameter");
                    xmlWriter.WriteString("" + c1.Diameter);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "RectangleFilm":
                {
                    RectangleFilm r1 = (RectangleFilm)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Rectangle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Film");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("None");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("height");
                    xmlWriter.WriteString("" + r1.Height);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("width");
                    xmlWriter.WriteString("" + r1.Width);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "SquareFilm":
                {
                    SquareFilm s1 = (SquareFilm)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Square");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Film");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("None");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("height");
                    xmlWriter.WriteString("" + s1.A);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "TriangleFilm":
                {
                    TriangleFilm t1 = (TriangleFilm)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Triangle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Film");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("None");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_a");
                    xmlWriter.WriteString("" + t1.A);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_b");
                    xmlWriter.WriteString("" + t1.B);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_c");
                    xmlWriter.WriteString("" + t1.C);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "CirclePaper":
                {
                    CirclePaper c1 = (CirclePaper)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Circle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Paper");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("" + c1.Color);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("diameter");
                    xmlWriter.WriteString("" + c1.Diameter);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "RectanglePaper":
                {
                    RectanglePaper r1 = (RectanglePaper)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Rectangle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Paper");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("" + r1.Color);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("height");
                    xmlWriter.WriteString("" + r1.Height);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("width");
                    xmlWriter.WriteString("" + r1.Width);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "SquarePaper":
                {
                    SquarePaper s1 = (SquarePaper)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Square");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Paper");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("" + s1.Color);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("height");
                    xmlWriter.WriteString("" + s1.A);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }

                case "TrianglePaper":
                {
                    TrianglePaper t1 = (TrianglePaper)i;
                    xmlWriter.WriteStartElement("figure");
                    xmlWriter.WriteAttributeString("type", "Triangle");
                    xmlWriter.WriteStartElement("material");
                    xmlWriter.WriteString("Paper");
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("color");
                    xmlWriter.WriteString("" + t1.Color);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_a");
                    xmlWriter.WriteString("" + t1.A);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_b");
                    xmlWriter.WriteString("" + t1.B);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteStartElement("side_c");
                    xmlWriter.WriteString("" + t1.C);
                    xmlWriter.WriteEndElement();
                    xmlWriter.WriteEndElement();
                    break;
                }
                }
            }
            xmlWriter.WriteEndDocument();
            xmlWriter.Close();
        }
예제 #16
0
        /// <summary>
        /// parses the paper rectangle into the xml element.
        /// </summary>
        /// <param name="xmlWriter"></param>
        /// <param name="paperRectangle">Paper rectangle</param>
        public static void ParseToXmlElementFromPaperRectangle(XmlTextWriter xmlWriter, RectanglePaper paperRectangle)
        {
            xmlWriter.WriteStartElement(nameof(RectanglePaper));

            xmlWriter.WriteElementString(nameof(RectanglePaper.Sides),
                                         string.Join(' ', paperRectangle.Sides));

            xmlWriter.WriteElementString(nameof(RectanglePaper.Color),
                                         paperRectangle.Color.ToString());
            xmlWriter.WriteEndElement();
        }
예제 #17
0
        /// <summary>
        /// Create new figure
        /// </summary>
        /// <param name="material">Material of new figure</param>
        /// <param name="form">Form of new figure</param>
        /// <param name="ps">Array of other params</param>
        /// <returns>Figure</returns>
        public IFigure CreateFigure(Material material, Form form, params float [] ps)
        {
            IFigure figure;

            switch (material)
            {
            case Material.Film:
            {
                switch (form)
                {
                case Form.Circle:
                {
                    if (ps.Length == 1)
                    {
                        figure = new CircleFilm(ps[0]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Rectangle:
                {
                    if (ps.Length == 2)
                    {
                        figure = new RectangleFilm(ps[0], ps[1]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Square:
                {
                    if (ps.Length == 1)
                    {
                        figure = new SquareFilm(ps[0]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Triangle:
                {
                    if (ps.Length == 3)
                    {
                        figure = new TriangleFilm(ps[0], ps[1], ps[2]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                default: throw new Exception("Wrong input Form");
                }
                break;
            }

            case Material.Paper:
            {
                switch (form)
                {
                case Form.Circle:
                {
                    if (ps.Length == 1)
                    {
                        figure = new CirclePaper(ps[0]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Rectangle:
                {
                    if (ps.Length == 2)
                    {
                        figure = new RectanglePaper(ps[0], ps[1]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Square:
                {
                    if (ps.Length == 1)
                    {
                        figure = new SquarePaper(ps[0]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                case Form.Triangle:
                {
                    if (ps.Length == 3)
                    {
                        figure = new TrianglePaper(ps[0], ps[1], ps[2]);
                        break;
                    }
                    else
                    {
                        throw new Exception("Wrong input parameters");
                    }
                }

                default: throw new Exception("Wrong input Form");
                }
                break;
            }

            default: throw new Exception("Wrong input Material");
            }
            return(figure);
        }