private static async Task ProcessDirectory(string directory) { if (!Directory.Exists(directory)) { throw new ArgumentException($"Directory {directory} doesn't exist", directory); } var files = Directory .GetFiles(directory) .Select(x => Path.Combine(directory, x)) .ToList(); // Полные пути исходных файлов var operationFactory = new MatrixOperationFactory(Logger); var streamReader = new StreamMatrixReader(operationFactory); var streamWriter = new StreamMatrixWriter(); var progressReporter = new ProgressReporter(files.Count, Logger); await files.ParallelForEachAsync(async file => { using var input = new StreamReader(file); var resultFile = Path.Combine(directory, Path.GetFileNameWithoutExtension(file) + "_result.txt"); // Полный путь до файла с результатом await using var output = new StreamWriter(resultFile); var matrices = streamReader.GetMatrices(input); await streamWriter.WriteMatricesAsync(output, matrices); progressReporter.Report(file); }); }
public async Task Write_TwoByTwoMatrix_ValidOutput() { var array = new int[2, 2] { { 1, 2 }, { 3, 4 } }; var matrixArray = new Matrix[] { new Matrix(array) }; var stringWriter = new StringWriter(); var matrixWriter = new StreamMatrixWriter(); await matrixWriter.WriteMatricesAsync(stringWriter, matrixArray); var ourputString = stringWriter.ToString(); var exprected = $"1 2{Environment.NewLine}3 4{Environment.NewLine}"; Assert.Equal(exprected, ourputString); }