using MatrixProject.Exceptions; using System.Numerics; using System.Reflection; namespace MatrixProject.Test; public class MatrixTest { [InlineData(10)] [InlineData(5)] [InlineData(2)] [InlineData(3)] [Theory] public void CheckRowsBeforeInitMatrixWithRows(int size) { Matrix matrix = new Matrix(size); Assert.Equal(size, matrix.Rows); Assert.Equal(size, matrix.Columns); } [Fact] public void CheckColumnsBeforeInitMatrix() { Matrix matrix = new Matrix(); Assert.Equal(5, matrix.Columns); } [Theory] [MemberData(nameof(testTwoDimArray))] public void CheckFillMatrixInDefaultConstructor(int row, int column, int fillNumber, double[,] testArray) { Matrix matrix = new Matrix(row, column, fillNumber); Assert.True(EqualsTwoDimArray(testArray, matrix)); } [Theory] [MemberData(nameof(testMult))] public void CheckMultOnScalar(int row, int column, int fillNumber, int scalar, double[,] testArray) { Matrix matrix = new Matrix(row, column, fillNumber); matrix = matrix * scalar; Assert.True(EqualsTwoDimArray(testArray, matrix)); } [Theory] [MemberData(nameof(testSum))] public void CheckSum(Matrix matrix, Matrix matrixTwo) { Assert.Throws(() => matrix += matrixTwo); } public static TheoryData testTwoDimArray => new () { {2, 2, 3, new double[,] { { 3, 3 }, { 3, 3 } } }, {2, 2, 3, new double[,] { { 3, 3 }, { 3, 3 } } }, {2, 2, 3, new double[,] { { 3, 3 }, { 3, 3 } } }, {2, 2, 3, new double[,] { { 3, 3 }, { 3, 3 } } }, {2, 2, 3, new double[,] { { 3, 3 }, { 3, 3 } } } }; public static TheoryData testMult => new() { {2, 2, 1, 4, new double[2,2]{ {4,4 }, {4,4} }} }; public static TheoryData testSum => new() { {new Matrix(4, 3), new Matrix(3, 4) } }; private bool EqualsTwoDimArray(double[,] testMatrix, Matrix matrix) { if(testMatrix.GetLength(0) != matrix.Rows || testMatrix.GetLength(1) != matrix.Columns) return false; for (int i = 0; i < matrix.Rows; i++) { for (int j = 0; j < matrix.Columns; j++) { if (testMatrix[i, j] != matrix[i, j]) return false; } } return true; } }