/* MARS ROVERS by Acaz * * I comment some assumptions along the code of my design as my recruiter asked. * * I tried to make a simple code without an over-engineering but is also flexible to change. */ static void Main(string[] args) { string[] inputData = File.ReadAllLines("InputData.txt"); var plateauLength = inputData[0].Split(' '); var rover1Position = inputData[1].Split(' '); var rover1Instructions = inputData[2]; var rover2Position = inputData[3].Split(' '); var rover2Instructions = inputData[4]; var plateau = new Plateau(Convert.ToInt32(plateauLength[0]), Convert.ToInt32(plateauLength[1])); //Rover 1 plateau.InsertRover(new Rover(), new Position(Convert.ToInt32(rover1Position[0]), Convert.ToInt32(rover1Position[1]), ConvertToOrientation(Convert.ToChar(rover1Position[2])))); foreach (char instruction in rover1Instructions) { plateau.Rovers[0].ExecuteCommandByLetter(instruction); } Console.WriteLine(plateau.Rovers[0].ReportPosition()); //Rover 2 plateau.InsertRover(new Rover(), new Position(Convert.ToInt32(rover2Position[0]), Convert.ToInt32(rover2Position[1]), ConvertToOrientation(Convert.ToChar(rover2Position[2])))); foreach (char instruction in rover2Instructions) { plateau.Rovers[1].ExecuteCommandByLetter(instruction); } Console.WriteLine(plateau.Rovers[1].ReportPosition()); Console.ReadLine(); }
public void InsertRover_with_a_instance_of_a_rover_and_a_valid_position_should_insert_the_rover_in_the_reported_position() { var plateau = new Plateau(5, 5); plateau.InsertRover(new Rover(), new Position(1, 2, Orientation.North)); Assert.AreEqual(1, plateau.Rovers[0].Position.PositionX); Assert.AreEqual(2, plateau.Rovers[0].Position.PositionY); Assert.AreEqual(Orientation.North, plateau.Rovers[0].Position.Orientation); }
public void InsertRover_with_a_invalid_position_should_throw_a_exception_with_a_error_message() { var plateau = new Plateau(5, 5); try { plateau.InsertRover(new Rover(), new Position(5, 6, Orientation.North)); } catch (Exception ex) { Assert.AreEqual("Invalid coordinates.", ex.Message); throw; } }
public void Plateau_constructor_with_5_and_5_should_get_a_instance_of_plateau_with_5_of_lenght_X_and_5_of_length_Y() { var plateau = new Plateau(5, 5); Assert.AreEqual(5, plateau.LengthX); Assert.AreEqual(5, plateau.LengthY); }