public void ValidateAndParseTest() { StringBuilder testInput = new StringBuilder(); testInput.AppendLine("5 5"); testInput.AppendLine("1 2 N"); testInput.AppendLine("LMLMLMLMM"); testInput.AppendLine("3 3 E"); testInput.AppendLine("MMRMMRMRRM"); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(testInput.ToString())); StreamReader sr = new StreamReader(ms); InstructionParser parser = new InstructionParser(sr); Assert.AreEqual(parser.ValidateAndParse(), 0); Assert.AreEqual(parser.GridCorner, (5, 5)); Assert.AreEqual(parser.RoverInstructions.Count, 2); Assert.AreEqual(parser.RoverInstructions[0], ((1, 2, Heading.N), "LMLMLMLMM")); Assert.AreEqual(parser.RoverInstructions[1], ((3, 3, Heading.E), "MMRMMRMRRM")); }
static void Main(string[] args) { while (true) { Console.WriteLine("Please provide the path to a text file with NASA's input:"); Console.WriteLine("Press enter with no input to default to an \"Instructions.txt\" file located in the same directory as this executable."); string path = Console.ReadLine(); if (String.IsNullOrEmpty(path)) { path = "Instructions.txt"; } StreamReader sr; InstructionParser ip; int roverID = 1; List <Rover> roverList = new List <Rover>(); try { sr = new StreamReader(path); ip = new InstructionParser(sr); if (ip.ValidateAndParse() != 0) { Console.WriteLine("There was an issue validating the input from NASA. Check the instructions for errors and try again."); Console.WriteLine(); continue; } Plateau plateau = new Plateau(ip.GridCorner.xCoord, ip.GridCorner.yCoord); foreach (var roverSet in ip.RoverInstructions) { int xCoord = roverSet.Start.xCoord; int yCoord = roverSet.Start.yCoord; Heading heading = roverSet.Start.heading; string instructions = roverSet.Instructions; roverList.Add(new Rover(xCoord, yCoord, heading, plateau, roverID, instructions)); roverID++; } foreach (Rover rover in roverList) { if (rover.Run() == 1) { Console.WriteLine("Rover " + rover.RoverID + " Ran into a problem on its route, it stopped in progress at:"); } Console.WriteLine(rover.ReportCoordsAndHeading()); } } catch (Exception e) { if (e is FileNotFoundException || e is DirectoryNotFoundException || e is IOException) { Console.WriteLine("Could not find the file or directory specified, please check the path provided."); Console.WriteLine(); continue; } else { throw; } } } }