public void MatrixConstructorShouldCreateValidMatrix() { Matrix matrix = new Matrix(3, 3); var pos = new Position(2, 2); matrix[pos] = 5; Assert.AreEqual(5, matrix[pos]); Assert.AreEqual(0, matrix[new Position(2, 1)]); }
internal static void PrintMatrix(Matrix matrix) { for (int row = 0; row < matrix.GetLength(0); row++) { for (int col = 0; col < matrix.GetLength(1); col++) { var pos = new Position(row, col); Console.Write(string.Format("{0,5}", matrix[pos])); } Console.WriteLine(); } }
public void MatrixGeneratorCheckIfFreeNeighbourCellExistsShouldWorkIfFreeNeighbourCellDeosNotExistsAndPositionIsAtTheBorder() { var arr = new int[,] { {1,1,1,1,1}, {1,0,1,1,1}, {1,1,1,1,1} }; var matrix = new Matrix(3, 5); matrix.MatrixArray = arr; var position = new Position(0, 4); var cellExist = matrix.CheckIfAnyNeighbourCellContainsValue(position, 0); Assert.IsFalse(cellExist); }
public void IsPositionValidShouldReturnTrueOnValidPosition() { var arr = new int[,] { {1,1,1,1,0}, {1,1,1,1,1}, {1,1,1,0,0} }; var matrix = new Matrix(3, 5); matrix.MatrixArray = arr; var position = new Position(0, 4); Assert.IsTrue(matrix.IsPositionValid(position), "0 4"); position = new Position(2, 4); Assert.IsTrue(matrix.IsPositionValid(position), "2 4"); position = new Position(2, 3); Assert.IsTrue(matrix.IsPositionValid(position), "2 3"); }
public void IsPositionValidShouldReturnFalseOnInvalidPosition() { var arr = new int[,] { {1,1,1,1,1}, {1,1,1,1,1}, {1,1,1,1,1} }; var matrix = new Matrix(3, 5); matrix.MatrixArray = arr; var position = new Position(-2, 4); Assert.IsFalse(matrix.IsPositionValid(position)); position = new Position(2, -5); Assert.IsFalse(matrix.IsPositionValid(position)); position = new Position(-1, 3); Assert.IsFalse(matrix.IsPositionValid(position)); }
public IPosition getNeighbourPosition(Direction dir) { IPosition newPosition = new Position(this.Row, this.Col); switch (dir) { case Direction.DownRight: newPosition.Row++; newPosition.Col++; break; case Direction.Down: newPosition.Row++; break; case Direction.DownLeft: newPosition.Row++; newPosition.Col--; break; case Direction.Left: newPosition.Col--; break; case Direction.UpLeft: newPosition.Row--; newPosition.Col--; break; case Direction.Up: newPosition.Row--; break; case Direction.UpRight: newPosition.Row--; newPosition.Col++; break; case Direction.Right: newPosition.Col++; break; default: throw new ArgumentException("Invalid direction."); } return newPosition; }