コード例 #1
0
        public async Task IsCorrectWritingMatrixToFileTest(int[,] writtenMatrix, string expectedFilePath)
        {
            var writingPath = "writing_test.txt";
            await fileWriter.WriteAsync(writtenMatrix, writingPath);

            string actual, expected;

            using (var streamReader = new StreamReader(writingPath, Encoding.Default))
            {
                actual = await streamReader.ReadToEndAsync();

                actual = Regex.Replace(actual, @"\s+", " ").Trim();
            }
            using (var streamReader = new StreamReader(expectedFilePath, Encoding.Default))
            {
                expected = await streamReader.ReadToEndAsync();

                expected = Regex.Replace(expected, @"\s+", " ").Trim();
            }
            Assert.AreEqual(expected, actual);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: resueman/Homeworks_Sem3
        static async Task MainAsync()
        {
            Console.WriteLine("Please, choose option");
            Console.WriteLine("Press 1 to compare multipliers time of work on different number of threads and constant matrix size");
            Console.WriteLine("Press 2 to compare multipliers time of work on different matrix sizes");
            Console.WriteLine("Press any key to perform matrix multiplication");

            var choice = Console.ReadLine();

            switch (choice)
            {
            case "1":
                CompareTimeOfWorkOnConstantMatrixSize();
                break;

            case "2":
                CompareTimeOfWorkDependingOnMatrixSize();
                break;
            }

            Console.WriteLine("Enter path to file with left matrix");
            var pathLeft = Console.ReadLine();

            Console.WriteLine("Enter path to file with right matrix");
            var pathRight = Console.ReadLine();

            Console.WriteLine("Enter path to file, where result will be written");
            var resultPath = Console.ReadLine();

            int[,] left, right;
            try
            {
                var fileReader = new MatrixFileReader();
                left = await fileReader.ReadAsync(pathLeft);

                right = await fileReader.ReadAsync(pathRight);
            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            Console.WriteLine("\nChoose type of multiplier");
            Console.WriteLine("1 - Synchronous Matrix Multiplier");
            Console.WriteLine("2 - Parallel.For Matrix Multiplier");
            Console.WriteLine("3 - Striped Parallelizing Matrix Multiplier");
            Console.WriteLine("4 - Sequentially Parallelizing Matrix Multiplier");
            Console.WriteLine("Press any key to exit");

            choice = Console.ReadLine();
            IMatrixMultiplier multiplier = choice switch
            {
                "1" => new SynchronousMatrixMultiplier(),
                "2" => new ParallelForMatrixMultiplier(),
                "3" => new StripedParallelizingMatrixMultiplier(),
                "4" => new SequentiallyParallelizingMatrixMultiplier(),
                _ => null
            };

            if (multiplier == null)
            {
                return;
            }

            Console.WriteLine("Multiplying performs...");
            try
            {
                var result     = multiplier.Multiply(left, right);
                var fileWriter = new MatrixFileWriter();
                await fileWriter.WriteAsync(result, resultPath);
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            Console.WriteLine("Ready!");
        }
    }