public void MatrixHierarchyAdditionTest() { var squareMatrix = new int[, ] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; var diagonalMatrix = new int[, ] { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; var symmetricalMatrix = new int[, ] { { 1, 2, 3 }, { 2, 1, 4 }, { 3, 4, 1 } }; var resultSquareSquare = new[, ] { { 2, 4, 6 }, { 8, 10, 12 }, { 14, 16, 18 } }; var resultSquareDiagonal = new[, ] { { 2, 2, 3 }, { 4, 6, 6 }, { 7, 8, 10 } }; var resultSquareSymmetrical = new[, ] { { 2, 4, 6 }, { 6, 6, 10 }, { 10, 12, 10 } }; var resultDiagonalDiagonal = new[, ] { { 2, 0, 0 }, { 0, 2, 0 }, { 0, 0, 2 } }; var resultDiagonalSquare = new[, ] { { 2, 0, 0 }, { 0, 6, 0 }, { 0, 0, 10 } }; var resultDiagonalSymmetrical = new[, ] { { 2, 0, 0 }, { 0, 2, 0 }, { 0, 0, 2 } }; var resultSymmetricalSymmetrical = new[, ] { { 2, 4, 6 }, { 4, 2, 8 }, { 6, 8, 2 } }; var resultSymmetricalSquare = new[, ] { { 2, 4, 6 }, { 6, 6, 10 }, { 10, 12, 10 } }; var resultSymmetricalDiagonal = new[, ] { { 2, 2, 3 }, { 2, 2, 4 }, { 3, 4, 2 } }; var matrixSquare = new SquareMatrix <int>(squareMatrix); var matrixDiagonal = new DiagonalMatrix <int>(diagonalMatrix); var matrixSymmetrical = new SymmetricalMatrix <int>(symmetricalMatrix); var sumSquareSquare = MatrixExtension <int> .Addition(matrixSquare, matrixSquare); var sumSquareDiagonal = MatrixExtension <int> .Addition(matrixSquare, matrixDiagonal); var sumSquareSymmetrical = MatrixExtension <int> .Addition(matrixSquare, matrixSymmetrical); var sumDiagonalDiagonal = MatrixExtension <int> .Addition(matrixDiagonal, matrixDiagonal); var sumDiagonalSquare = MatrixExtension <int> .Addition(matrixDiagonal, matrixSquare); var sumDiagonalSymmetrical = MatrixExtension <int> .Addition(matrixDiagonal, matrixSymmetrical); var sumSymmetricalSymmetrical = MatrixExtension <int> .Addition(matrixSymmetrical, matrixSymmetrical); var sumSymmetricalSquare = MatrixExtension <int> .Addition(matrixSymmetrical, matrixSquare); var sumSymmetricalDiagonal = MatrixExtension <int> .Addition(matrixSymmetrical, matrixDiagonal); CollectionAssert.AreEqual(resultSquareSquare, sumSquareSquare.GetMatrix()); CollectionAssert.AreEqual(resultSquareDiagonal, sumSquareDiagonal.GetMatrix()); CollectionAssert.AreEqual(resultSquareSymmetrical, sumSquareSymmetrical.GetMatrix()); CollectionAssert.AreEqual(resultDiagonalDiagonal, sumDiagonalDiagonal.GetMatrix()); CollectionAssert.AreEqual(resultDiagonalSquare, sumDiagonalSquare.GetMatrix()); CollectionAssert.AreEqual(resultDiagonalSymmetrical, sumDiagonalSymmetrical.GetMatrix()); CollectionAssert.AreEqual(resultSymmetricalSymmetrical, sumSymmetricalSymmetrical.GetMatrix()); CollectionAssert.AreEqual(resultSymmetricalSquare, sumSymmetricalSquare.GetMatrix()); CollectionAssert.AreEqual(resultSymmetricalDiagonal, sumSymmetricalDiagonal.GetMatrix()); }