public void CommandsIgnoredIfRobotNotPlacedOnMap() { var driver = new RobotDriver(robot.Object); robot.Setup(r => r.Place(-1, -1, "NORTH")).Throws <ArgumentOutOfRangeException>(); driver.AddCommand("PLACE -1,-1,NORTH"); driver.AddCommand("MOVE"); driver.AddCommand("REPORT"); driver.AddCommand("LEFT"); driver.AddCommand("RIGHT"); driver.AddCommand("PLACE 1,1,NORTH"); driver.AddCommand("MOVE"); driver.AddCommand("REPORT"); driver.AddCommand("LEFT"); driver.AddCommand("RIGHT"); driver.Drive(); robot.Verify(r => r.Move(), Times.Once); robot.Verify(r => r.Report(), Times.Once); robot.Verify(r => r.Left(), Times.Once); robot.Verify(r => r.Right(), Times.Once); robot.Verify(r => r.Place(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>()), Times.Exactly(2)); }
public void RobotDriver_UnrecognisedCommand_ReportsInvalid() { var driver = new RobotDriver(new Robot()); var response = driver.executecommand("XXXX"); Assert.AreEqual("Invalid command.", response); }
public void RobotDriver_PlaceCommandWithNoArguments_ReportsInvalid() { var driver = new RobotDriver(new Robot()); var response = driver.executecommand("PLACE"); Assert.AreEqual("Invalid command.", response); }
public void RobotDriver_RecognisedCommand_ReportsValid() { var driver = new RobotDriver(new Robot()); var response = driver.executecommand("MOVE"); Assert.AreEqual("Robot cannot move until it has been placed on the table.", response); }
public void RobotDriver_EmptyCommand_ReportsInvalid() { var driver = new RobotDriver(new Robot()); var response = driver.Command(""); Assert.AreEqual("Invalid command.", response); }
public void CanAddCommandsToDriver(string command, int expectedNumberOfCommands) { var driver = new RobotDriver(robot.Object); driver.AddCommand(command); Assert.Equal(driver.Commands.Count, expectedNumberOfCommands); }
public void RobotDriver_PlacedAndTurnedLeft_ReportsCorrectPosition() { var driver = new RobotDriver(new Robot()); driver.Command("PLACE 1,1,NORTH"); driver.Command("LEFT"); Assert.AreEqual("1,1,WEST", driver.Command("REPORT")); }
public void RobotDriver_PlacedAndTurnedRight_ReportsCorrectPosition() { var driver = new RobotDriver(new Robot()); driver.executecommand("PLACE 1,1,NORTH"); driver.executecommand("RIGHT"); Assert.AreEqual("1,1,EAST", driver.executecommand("REPORT")); }
public void RobotDriver_PlacedAndMoved_ReportsCorrectPosition() { var driver = new RobotDriver(new Robot()); driver.executecommand("PLACE 1,1,NORTH"); driver.executecommand("MOVE"); Assert.AreEqual("1,2,NORTH", driver.executecommand("REPORT")); }
public void RobotDriver_PlacedAndMovedOffTable_CannotBeMoved() { var driver = new RobotDriver(new Robot()); driver.executecommand("PLACE 5,5,NORTH"); driver.executecommand("MOVE"); Assert.AreEqual("5,5,NORTH", driver.executecommand("REPORT")); }
public void CanIssuePlaceCommandToRobot() { var driver = new RobotDriver(robot.Object); robot.Setup(r => r.Place(0, 0, "NORTH")); driver.AddCommand("PLACE 0,0,NORTH"); driver.Drive(); robot.Verify(r => r.Place(0, 0, "NORTH"), Times.Once); }
public void RobotDriver_PlacedMovedAndTurned_ReportsCorrectPosition() { var driver = new RobotDriver(new Robot()); driver.Command("PLACE 1,2,EAST"); driver.Command("MOVE"); driver.Command("MOVE"); driver.Command("LEFT"); driver.Command("MOVE"); Assert.AreEqual("3,3,NORTH", driver.Command("REPORT")); }
public void CanIssueLeftCommandToRobot() { var driver = new RobotDriver(robot.Object); robot.Setup(r => r.Left()); driver.AddCommand("PLACE 0,0,NORTH"); driver.AddCommand("LEFT"); driver.Drive(); robot.Verify(r => r.Left(), Times.Once); }
private static void DisplayWelcome() { var driver = new RobotDriver(new Robot()); Console.WriteLine("\n Toy Robot"); Console.WriteLine("---------"); Console.WriteLine(""); Console.Write("\nHere are the options :\n"); Console.Write("1-Using File.\n2-Standard Input.\n3-Exit.\n"); Console.Write("\nInput your choice :"); var opt = Convert.ToInt32(Console.ReadLine()); string command; switch (opt) { case 1: Console.WriteLine("\nPlease enter the fully qualified path of the file to be uploaded to the URI"); using (var file = new StreamReader(Console.ReadLine())) { while ((command = file.ReadLine()) != null) { Console.WriteLine(driver.Command(command)); } } break; case 2: while (true) { command = PromptForCommand(); if (command.ToUpper() == "REPORT") { Console.WriteLine(driver.Command(command)); DisplayWelcome(); } else { Console.WriteLine(driver.Command(command)); } } case 3: break; default: Console.Write("Input correct option\n"); break; } }
public void RobotDriver_PlaceCommandWithInvalidArguments_ReportsInvalid() { var driver = new RobotDriver(new Robot()); var response = driver.Command("PLACE XXX"); Assert.AreEqual("Invalid command.", response); response = driver.Command("PLACE 1,X,NORTH"); Assert.AreEqual("Invalid command.", response); response = driver.Command("PLACE X,1,NORTH"); Assert.AreEqual("Invalid command.", response); response = driver.Command("PLACE 1,1,XXX"); Assert.AreEqual("Invalid command.", response); }
public void CanGetReportsFromDriver() { var driver = new RobotDriver(robot.Object); string report = "0,0,NORTH"; robot.Setup(r => r.Report()).Returns(report); driver.AddCommand($"PLACE {report}"); driver.AddCommand("REPORT"); driver.Drive(); Assert.Equal(driver.Reports.First(), report); }
public void CanResetDriver() { var driver = new RobotDriver(robot.Object); string report = "0,0,NORTH"; robot.Setup(r => r.Report()).Returns(report); driver.AddCommand($"PLACE {report}"); driver.AddCommand("REPORT"); driver.Reset(); Assert.Equal(driver.Commands.Count, 0); Assert.Equal(driver.Reports.Count, 0); }
public void NoCommandsIssuedUntilRobotPlaced() { var driver = new RobotDriver(robot.Object); driver.AddCommand("MOVE"); driver.AddCommand("REPORT"); driver.AddCommand("LEFT"); driver.AddCommand("RIGHT"); driver.AddCommand("PLACE 0,0,NORTH"); driver.Drive(); robot.Verify(r => r.Move(), Times.Never); robot.Verify(r => r.Report(), Times.Never); robot.Verify(r => r.Left(), Times.Never); robot.Verify(r => r.Right(), Times.Never); robot.Verify(r => r.Place(0, 0, "NORTH"), Times.Once); }
static void Main(string[] args) { var robotdriver = new RobotDriver(new RobotInstructions()); ShowWelcomeMessage(); ShowHelp(); while (true) { string instruction = PromptInstruction(); if (instruction.ToUpper() == "Q") { Environment.Exit(0); } Console.WriteLine(robotdriver.Command(instruction)); } }
public void RobotDriver_InitialisedRobotDriver_ControlsRobot() { var driver = new RobotDriver(new Robot()); Assert.IsNotNull(driver.Robot); }