/// <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); }
public void CreatingRectangleMustReturnObject(double firstSide, double secondSide) { Rectangle paperRectangle = new PaperRectangle(firstSide, secondSide); Rectangle membraneRectangle = new MembraneRectangle(firstSide, secondSide); Assert.IsNotNull(paperRectangle); Assert.IsNotNull(membraneRectangle); }
public void TestGetPerimeterOfRectangle(double firstSide, double secondSide, double expectedArea) { Rectangle paperRectangle = new PaperRectangle(firstSide, secondSide); Rectangle membraneRectangle = new MembraneRectangle(firstSide, secondSide); Assert.AreEqual(expectedArea, paperRectangle.GetPerimeter()); Assert.AreEqual(expectedArea, membraneRectangle.GetPerimeter()); }
public void TestCutShapeFromAnotherShape(double smallerRadius, double biggerRadius, double smallerSide, double biggerSide, double smallerFirstSide, double smallerSecondSide, double biggerFirstSide, double biggerSecondSide) { //Cutting shape from another shape is available only in case when area of source shape bigger then area target shape //Cutting shape from another shape also is available only for equals materials Circle bigCircle = new MembraneCircle(biggerRadius); Circle smallCircle = new MembraneCircle(smallerRadius, bigCircle); Square bigSquare = new MembraneSquare(biggerSide); Square smallSquare = new MembraneSquare(smallerSide, bigSquare); Rectangle bigRectangle = new MembraneRectangle(biggerFirstSide, biggerSecondSide); Rectangle smallRectangle = new MembraneRectangle(smallerFirstSide, smallerSecondSide, bigRectangle); Circle circleFromRectangle = new MembraneCircle(smallerRadius, bigRectangle); Square squareFromRectangle = new MembraneSquare(smallerSide, bigRectangle); Assert.IsNotNull(smallCircle); Assert.IsNotNull(smallSquare); Assert.IsNotNull(smallRectangle); Assert.IsNotNull(circleFromRectangle); Assert.IsNotNull(squareFromRectangle); }
/// <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); }