public void TestTrue() { // arrange string path1 = @"D:\matrix3.txt"; string path2 = @"D:\matrix2.txt"; Matrix matrTest = new Matrix(path1); Matrix matrCheck = new Matrix(path2); int[] arr = new int[matrTest.Columns * matrTest.Rows]; Direction direct = new Direction(); //act matrTest.PassageMatrix(ref arr, 0, 0, 0, matrTest.Rows, matrTest.Columns, direct); // Assert CollectionAssert.AreEqual(matrCheck.GetMatrix, arr); }
public void PassageMatrix(ref int[] arr, int linearPosition, int positionR, int positionC, int numRows, int numColumns, Direction direction) { if(numColumns !=0 && numRows!=0) { switch (direction.CurrentDirection) { case "right": { for (int i=positionC; i<positionC+numColumns; i++) { arr[linearPosition] = matrix[positionR, i]; linearPosition++; } direction.SwitchDirection(); PassageMatrix(ref arr, linearPosition, positionR + 1, positionC + numColumns - 1, numRows - 1, numColumns, direction); break; } case "down": { for (int i = positionR; i < positionR+numRows; i++) { arr[linearPosition] = matrix[i, positionC]; linearPosition++; } direction.SwitchDirection(); PassageMatrix(ref arr, linearPosition, positionR +numRows- 1, positionC - 1, numRows , numColumns-1, direction); break; } case "left": { for (int i = positionC; i >=positionC+1-numColumns; i--) { arr[linearPosition] = matrix[positionR, i]; linearPosition++; } direction.SwitchDirection(); PassageMatrix(ref arr, linearPosition, positionR -1, positionC - numColumns + 1, numRows - 1, numColumns, direction); break; } case "up": { for (int i = positionR; i >=positionR+1-numRows; i--) { arr[linearPosition] = matrix[i, positionC]; linearPosition++; } direction.SwitchDirection(); PassageMatrix(ref arr, linearPosition, positionR+1-numRows , positionC + 1, numRows, numColumns - 1, direction); break; } } } //recursion exit (do nothing) }
static void Main(string[] args) { Matrix matrTest = new Matrix(@"D:\matrix3.txt"); Matrix matrCheck = new Matrix(@"D:\matrix2.txt"); int[] arr = new int[matrTest.Columns * matrTest.Rows]; Direction direct = new Direction(); //act matrTest.PassageMatrix(ref arr, 0, 0, 0, matrTest.Rows, matrTest.Columns, direct); foreach(int val in arr) { Console.Write(" "); Console.Write(val); } Console.ReadKey(); }