public bool ProcessFile(string fileInputPath, string fileOutputPath) { Canvas canvas; List <Tuple <char, string[]> > parameters = _fileReader.ReadFile(fileInputPath); if (!parameters.Any(p => p.Item1 == 'C')) { Console.WriteLine("There is no canvas in the input file"); return(false); } else { var canvasParameter = parameters.FirstOrDefault(p => p.Item1 == 'C'); canvas = _canvasService.CreateCanvas(int.Parse(canvasParameter.Item2[0]), int.Parse(canvasParameter.Item2[1])); parameters.Remove(canvasParameter); _fileWriter.ClearFile(fileOutputPath); _fileWriter.DrawShapeIntoFile(canvas, fileOutputPath); } foreach (var parameter in parameters) { switch (parameter.Item1) { case 'L': { Line line = new Line(new Point(int.Parse(parameter.Item2[0]), int.Parse(parameter.Item2[1])), new Point(int.Parse(parameter.Item2[2]), int.Parse(parameter.Item2[3]))); _lineService.CreateShape(ref canvas, line); _fileWriter.DrawShapeIntoFile(canvas, fileOutputPath); } break; case 'R': { Rectangle rectangle = new Rectangle(new Point(int.Parse(parameter.Item2[0]), int.Parse(parameter.Item2[1])), new Point(int.Parse(parameter.Item2[2]), int.Parse(parameter.Item2[3]))); _rectangleService.CreateShape(ref canvas, rectangle); _fileWriter.DrawShapeIntoFile(canvas, fileOutputPath); } break; case 'B': { _bucketFillService.FillCanvas(ref canvas, new Point(int.Parse(parameter.Item2[0]), int.Parse(parameter.Item2[1])), char.Parse(parameter.Item2[2])); _fileWriter.DrawShapeIntoFile(canvas, fileOutputPath); } break; } } return(true); }
public void FileWriter_DrawShapeIntoFile_Test() { // Given string outputFilePath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}{@"\Resource\OutputTest.txt"}"; string templateFilePath = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}{@"\Resource\OutputTemplateTest.txt"}"; Canvas canvas = new Canvas(4, 4); canvas.Matrix[0, 0] = '-'; canvas.Matrix[0, 1] = '-'; canvas.Matrix[0, 2] = '-'; canvas.Matrix[0, 3] = '-'; canvas.Matrix[3, 0] = '-'; canvas.Matrix[3, 1] = '-'; canvas.Matrix[3, 2] = '-'; canvas.Matrix[3, 3] = '-'; canvas.Matrix[1, 0] = '|'; canvas.Matrix[2, 0] = '|'; canvas.Matrix[1, 3] = '|'; canvas.Matrix[2, 3] = '|'; // When _fileWriter.DrawShapeIntoFile(canvas, outputFilePath); //Then Assert.IsTrue(CompareFiles(outputFilePath, templateFilePath)); }