public void Rover_Same_Direction_Move_Test() { //Arrange var expectedPosition = Tuple.Create(10, 10, "N"); //Act var position = new RobotSpecification(command, roverPosition, calculatePosition).RobotAction(gridSize, "L0R0", "R1", intialPosition); //Assert Assert.IsNotNull(position); Assert.AreEqual(expectedPosition, position); }
public void Rover_Position_Change_Test() { //Arrange var expectedPosition = Tuple.Create(8, 12, "E"); //Act var position = new RobotSpecification(command, roverPosition, calculatePosition).RobotAction(gridSize, "L1L2L3", "R1", intialPosition); //Assert Assert.IsNotNull(position); Assert.AreEqual(expectedPosition, position); }
/// <summary> /// Starting method of the program. /// </summary> /// <param name="args"></param> static void Main(string[] args) { ICalculatePosition calculatePosition = new CalculatePosition(); IRoverPosition roverPosition = new RoverPosition(); ICommandSequence command = new CommandSequence(); Tuple <int, int> gridSize = Tuple.Create(40, 30); //Initial Position is set only for the new Rovers, existing Rovers use last executed position Tuple <int, int, string> initialPosition = Tuple.Create(10, 10, "N"); while (true) { Console.WriteLine("Enter name of the new or existing Rover:"); string roverName = Console.ReadLine().Trim(); while (string.IsNullOrEmpty(roverName)) { Console.WriteLine("Please enter a valid name for Rover:"); roverName = Console.ReadLine().Trim(); } if (roverName.Equals("exit", StringComparison.OrdinalIgnoreCase)) { break; } Console.WriteLine($"Enter the move sequence for the Rover : {roverName}"); string roverMovement = Console.ReadLine().Trim(); while (string.IsNullOrEmpty(roverMovement)) { Console.WriteLine($"Please enter valid move sequence for the Rover : {roverName}"); roverMovement = Console.ReadLine().Trim(); } if (roverMovement.Equals("exit", StringComparison.OrdinalIgnoreCase)) { break; } try { var roverNewPosition = new RobotSpecification(command, roverPosition, calculatePosition).RobotAction(gridSize, roverMovement, roverName, initialPosition); Console.WriteLine($"{roverNewPosition.Item1} {roverNewPosition.Item2} {roverNewPosition.Item3}"); } catch (ArgumentOutOfRangeException) { Console.WriteLine($"The given sequence {roverMovement} for Rover {roverName} is taking it out side of the boundary which is invalid."); } catch (Exception ex) { Console.WriteLine("There is an error during the Rover move. Detailed Exception : " + ex.ToString()); } } Environment.Exit(0); }
public void Multiple_Rover_Same_Position_Same_Moves_Test() { //Arrange RobotSpecification robotSpecification = new RobotSpecification(command, roverPosition, calculatePosition); var intialPositionR1 = Tuple.Create(12, 12, "E"); var intialPositionR2 = Tuple.Create(12, 12, "E"); //Act var positionR1 = robotSpecification.RobotAction(gridSize, "R1L1R2R3R1", "R1", intialPositionR1); var positionR2 = robotSpecification.RobotAction(gridSize, "R1L1R2R3R1", "R2", intialPositionR2); //Assert Assert.IsNotNull(positionR1); Assert.IsNotNull(positionR2); Assert.AreEqual(positionR2, positionR1); }
public void Single_Rover_Moves_From_Existing_Position_Test() { //Arrange RobotSpecification robotSpecification = new RobotSpecification(command, roverPosition, calculatePosition); var expectedR1Position = Tuple.Create(19, 27, "N"); var expectedR2Position = Tuple.Create(17, 29, "W"); var intialPositionR1 = Tuple.Create(20, 20, "S"); //Act var positionR1 = robotSpecification.RobotAction(gridSize, "L2R3L5L2", "R1", intialPositionR1); var positionR2 = robotSpecification.RobotAction(gridSize, "R1L1R2R3R1", "R1", null); //Assert Assert.IsNotNull(positionR1); Assert.IsNotNull(positionR2); Assert.AreEqual(expectedR1Position, positionR1); Assert.AreEqual(expectedR2Position, positionR2); }
public void Multiple_Rover_Different_Position_Multiple_Moves_Test() { //Arrange RobotSpecification robotSpecification = new RobotSpecification(command, roverPosition, calculatePosition); var expectedR1Position = Tuple.Create(19, 27, "N"); var expectedR2Position = Tuple.Create(10, 10, "N"); var intialPositionR1 = Tuple.Create(20, 20, "S"); var intialPositionR2 = Tuple.Create(12, 12, "E"); //Act var positionR1 = robotSpecification.RobotAction(gridSize, "L2R3L5L2", "R1", intialPositionR1); var positionR2 = robotSpecification.RobotAction(gridSize, "R1L1R2R3R1", "R2", intialPositionR2); //Assert Assert.IsNotNull(positionR1); Assert.IsNotNull(positionR2); Assert.AreEqual(expectedR1Position, positionR1); Assert.AreEqual(expectedR2Position, positionR2); }
public void Rover_OutOfRange_Move_Test() { //Arrange RobotSpecification robotSpecification = new RobotSpecification(command, roverPosition, calculatePosition); var expectedPosition = Tuple.Create(10, 10, "N"); var position = Tuple.Create(10, 10, "N"); try { //Act position = robotSpecification.RobotAction(gridSize, "L25", "R1", intialPosition); } catch (ArgumentOutOfRangeException) { //Assert Assert.IsNotNull(position); Assert.AreEqual(expectedPosition, position); } }