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));
        }
Example #2
0
        public void RobotDriver_UnrecognisedCommand_ReportsInvalid()
        {
            var driver   = new RobotDriver(new Robot());
            var response = driver.executecommand("XXXX");

            Assert.AreEqual("Invalid command.", response);
        }
Example #3
0
        public void RobotDriver_PlaceCommandWithNoArguments_ReportsInvalid()
        {
            var driver   = new RobotDriver(new Robot());
            var response = driver.executecommand("PLACE");

            Assert.AreEqual("Invalid command.", response);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #7
0
        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"));
        }
Example #8
0
        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"));
        }
Example #9
0
        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"));
        }
Example #10
0
        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);
        }
Example #12
0
        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);
        }
Example #14
0
        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;
            }
        }
Example #15
0
        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);
        }
Example #19
0
        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));
            }
        }
Example #20
0
        public void RobotDriver_InitialisedRobotDriver_ControlsRobot()
        {
            var driver = new RobotDriver(new Robot());

            Assert.IsNotNull(driver.Robot);
        }