static void RunApp(string aPath, string bPath, string resultPath)
        {
            Matrix matrixA = new MatrixReaderTextFile(aPath).Read();
            Matrix matrixB = new MatrixReaderTextFile(bPath).Read();

            MatrixSumCommand matrixMult = new MatrixSumCommand(matrixA, matrixB);

            matrixMult.SetResultCallback((isSuccess, result) =>
            {
                new MatrixWriterTextFile(resultPath).Write(result as Matrix);
            });
            matrixMult.Run();
        }
        public void ReadWriteMatrixTest()
        {
            Matrix matrixOrigin = FetchMatrixA();

            new MatrixWriterTextFile("tmp_matrix.txt").Write(matrixOrigin);

            Matrix matrixReaded = new MatrixReaderTextFile("tmp_matrix.txt").Read();

            Assert.AreEqual(matrixOrigin.Rows, matrixReaded.Rows);
            Assert.AreEqual(matrixOrigin.Columns, matrixReaded.Columns);

            for (int i = 0; i < matrixOrigin.Rows; i++)
            {
                for (int j = 0; j < matrixOrigin.Columns; j++)
                {
                    Assert.AreEqual(matrixOrigin[i, j], matrixReaded[i, j], 0.001, "Values readed wrong");
                }
            }
        }
        public void Init(string path)
        {
            IMatrixReader matrixReader = new MatrixReaderTextFile(path);

            matrix = matrixReader.Read();
        }